Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java FasterXML Jackson:JSON@符号?_Java_Json_Jackson - Fatal编程技术网

Java FasterXML Jackson:JSON@符号?

Java FasterXML Jackson:JSON@符号?,java,json,jackson,Java,Json,Jackson,我有以下JSON: "segmentid": { "mot": { "@displaytype": "B", "@type": "BLT", "#text": "Buss" },... 以下问题: 什么是@符号 如果它用于特定的原因,我如何在Jackson中使用它 在本例中,它似乎只是一个普通的JSON属性 您可以在类中使用@JsonProperty注释来获取它: public YourJacksonClass { @

我有以下JSON:

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

  • 什么是
    @
    符号
  • 如果它用于特定的原因,我如何在Jackson中使用它

    • 在本例中,它似乎只是一个普通的JSON属性

      您可以在类中使用
      @JsonProperty
      注释来获取它:

      public YourJacksonClass {
           @JsonProperty("@displayType")
           private String displayType;
      
           @JsonProperty("@type")
           private String type;
      
           @JsonProperty("#text")
           private String text;
      }
      
      或者,如果您正在使用返回
      JsonNode
      readTree
      方法,只需正常访问它:

      JsonNode node = mapper.readTree(...);
      String type = node.get("segmentid").get("mot").get("@type");
      
      当需要将类型信息与对象一起序列化时,使用带有“@”前缀的属性也是很常见的

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

      在您的
      对象映射器中使用
      TypeIdResolver
      时,可以将读取类型
      “BLT”
      转换为实际类型。在这种情况下,它似乎只是一个正常的JSON属性

      您可以在类中使用
      @JsonProperty
      注释来获取它:

      public YourJacksonClass {
           @JsonProperty("@displayType")
           private String displayType;
      
           @JsonProperty("@type")
           private String type;
      
           @JsonProperty("#text")
           private String text;
      }
      
      或者,如果您正在使用返回
      JsonNode
      readTree
      方法,只需正常访问它:

      JsonNode node = mapper.readTree(...);
      String type = node.get("segmentid").get("mot").get("@type");
      
      当需要将类型信息与对象一起序列化时,使用带有“@”前缀的属性也是很常见的

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

      在您的
      对象映射器中使用
      TypeIdResolver
      时,读取类型,
      “BLT”
      ,然后可以转换为实际类型。是什么让您认为它是特定于Jackson的,而不仅仅是JSON密钥的名称?@SotiriosDelimanolis抱歉,我不清楚,但我知道它不是特定于Jackson的,它是特定于JSON的。我在问Jackson是否可以使用它。它肯定不是特定于JSON的,因为字符
      @
      #
      没有特殊意义。我已经在Jackson的继承层次结构处理中看到了它的使用,但是没有迹象表明这就是您在这里看到的(除了它被称为类型)。或(旧版本)。另一个。是什么让你认为它是特定于杰克逊的,而不仅仅是JSON密钥的名称?@SotiriosDelimanolis抱歉,如果我不清楚,但我知道它不是特定于杰克逊的,而是特定于JSON的。我在问Jackson是否可以使用它。它肯定不是特定于JSON的,因为字符
      @
      #
      没有特殊意义。我已经在Jackson的继承层次结构处理中看到了它的使用,但是没有迹象表明这就是您在这里看到的(除了它被称为类型)。或(旧版本)。另一个。