FasterXML Jackson: The JSON @ symbol?

前端 未结 1 1953
北荒
北荒 2020-12-12 05:31

i have the following JSON:

\"segmentid\": {
    \"mot\": {
        \"@displaytype\": \"B\",
        \"@type\": \"BLT\",
        \"#text\": \"Buss\"
    },...         


        
相关标签:
1条回答
  • 2020-12-12 06:13

    In this case it seems to be just a normal JSON propety.

    You can grab it by using the @JsonProperty annotation in your class:

    public YourJacksonClass {
         @JsonProperty("@displayType")
         private String displayType;
    
         @JsonProperty("@type")
         private String type;
    
         @JsonProperty("#text")
         private String text;
    }
    

    Or, if you are using the readTree method which returns a JsonNode, just access it normally:

    JsonNode node = mapper.readTree(...);
    String type = node.get("segmentid").get("mot").get("@type");
    

    It is also common to use '@'-prefixed properties when it is necessary to serialize type info together with the object.

    @JsonTypeInfo(use=JsonTypeInfo.Id.CLASS, include=JsonTypeInfo.As.PROPERTY, property="@type")
    

    The read type, "BLT" in your case, can then be transformed into an actual type when using a TypeIdResolver in your ObjectMapper.

    0 讨论(0)
提交回复
热议问题