2017-04-10 5 views
0

私は私のコードでは、カスタムクラスにJSON配列をこのJson要素をデシリアライズしようとしているを使用して、クラスへのオブジェクト[]をデシリアライズすることができません..しかし、私はしませんでした:ジャクソン

ObjectMapper OMapper = new ObjectMapper(); 
OMapper.configure(Feature.ALLOW_BACKSLASH_ESCAPING_ANY_CHARACTER, true); 
OMapper.configure(Feature.ALLOW_SINGLE_QUOTES, true); 
OMapper.configure(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS, true); 
OMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL); 
OMapper.enable(SerializationFeature.INDENT_OUTPUT); 

JsonNode node = OMapper.readTree("{\"headers\":[\"st1\", \"ddf2\", \"sdsd\"]}"); 


headers h = OMapper.treeToValue(node.get("headers"), headers.class); 

をし、これがありますクラス:

public class headers{ 
    public headers(){ 
     System.out.println("dssdsd"); 

    } 

    @JsonSetter 
    public void set(){ 
     System.out.println("ASAASAAS"); 
    } 

    @JsonGetter() 
    public JsonNode get(int index){ 
     System.out.println("XXXXXXXXXx"); 
     return null; 
    } 
} 

しかし、私はこのエラーを取得しています:

com.fasterxml.jackson.databind.exc.MismatchedInputException:することはできません [START_ARRAYトークンからヘッダーのインスタンスを逆シリアル化します。[ソース: UNKNOWN;行:-1、列:-1] com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:62) at com.fasterxml.jackson.databind.DeserializationContext.reportInputMismatch(DeserializationContext.java :1307) でcom.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1116) でcom.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1070) コムで。 fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromArray(BeanDeserializerBase.java:1447) at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializ eOther(BeanDeserializer.java:173) でcom.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:149)

答えて

1

あなたは配列としてheadersを指定する必要があります。

headers[] h = OMapper.treeToValue(node.get("headers"), headers[].class); 
+0

ありがとうございますが、ヘッダー[]からJsonNodeをどのように読み取ることができますか?ゲッターとセッター? – Jason4Ever