Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
281 views
in Technique[技术] by (71.8m points)

java - FasterXML Jackson: The JSON @ symbol?

i have the following JSON:

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

The following questions:

  • What is the @ notation for?
  • If it is used for a specific reason, how can I use it in Jackson?
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

1.4m articles

1.4m replys

5 comments

56.9k users

...