Wie kann ich das Serialisieren/Deserialisieren einen booleschen Wert aus FasterXML\Jackson als Int?

Schreibe ich eine JSON-Client für einen Server, gibt Boolean Werte als "0" und "1". Wenn ich versuche zu laufen, meine JSON-Client, den ich aktuell erhalten die folgende Ausnahme:

HttpMessageNotReadableException: Could not read JSON: Can not construct instance of java.lang.Boolean from String value '0': only "true" or "false" recognized

Also, wie kann ich setup FasterXML\Jackson richtig analysiert, so etwas wie:

{
   "SomeServerType" : {
     "ID" : "12345",
     "ThisIsABoolean" : "0",
     "ThisIsABooleanToo" : "1"
   }
}

Probe Pojo ' s:

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({"someServerType"})
public class myPojo
{
   @JsonProperty("someServerType")
   SomeServerType someServerType;

   @JsonProperty("someServerType")
   public SomeServerType getSomeServerType() { return someServerType; }

   @JsonProperty("someServertype")
   public void setSomeServerType(SomeServerType type)
   { someServerType = type; }
}

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({"someServerType"})
public class SomeServerType 
{
   @JsonProperty("ID")
   Integer ID;

   @JsonProperty("ThisIsABoolean")
   Boolean bool;

   @JsonProperty("ThisIsABooleanToo")
   Boolean boolToo;

   @JsonProperty("ID")
   public Integer getID() { return ID; }

   @JsonProperty("ID")
   public void setID(Integer id)
   { ID = id; }

   @JsonProperty("ThisIsABoolean")
   public Boolean getThisIsABoolean() { return bool; }

   @JsonProperty("ThisIsABoolean")
   public void setThisIsABoolean(Boolean b) { bool = b; }

   @JsonProperty("ThisIsABooleanToo")
   public Boolean getThisIsABooleanToo() { return boolToo; }

   @JsonProperty("ThisIsABooleanToo")
   public void setThisIsABooleanToo(Boolean b) { boolToo = b; }
}

Rest-Client-Linie

Hinweis 1: Das ist mit Spring 3.2

Hinweis 2: toJSONString() - ein-Helfer-Methode, um mit Jackson zu Serialisieren meine Parameter-Objekt

Hinweis 3: Ausnahme geschieht auf Lesen IN das Ergebnis-Objekt

DocInfoResponse result = restTemplate.getForObject(docInfoURI.toString()
                                  + "/?input={input}",
                                  DocInfoResponse.class,
                                  toJSONString(params));
  • Bitte fügen Sie Ihren Kunden die relevanten code.
  • Sie können definieren, Getter-Methoden für diejenigen Werte, die Rückkehr so etwas wie return "1".equals(stringRepresentation);.
InformationsquelleAutor Raystorm | 2015-12-15
Schreibe einen Kommentar