是否可以将每个JSON可序列化Java对象表示为Map <string,object =“”>?

时间:2016-03-09 22:07:52

标签: java json jackson

我有一堆与Jackson一起序列化的Java对象。所有序列化类型看起来都像这样:

class MySampleClass {
    @JsonProperty("propName1")
    private MyCustomType propName1;

    @JsonProperty("propName2")
    private MyOtherCustomType propName2;

    @JsonCreator
    public MySampleClass(@JsonProperty("propName1") MyCustomType propName1, @JsonProperty("propName2") MyOtherCustomType propName2) {
        this.propName1 = propName1;
        this.propName2 = propName2;
    }
}

是否有任何情况下将此类的实例转换为Map<String, Object>然后将地图转换为JSON将无法解压缩回原始Java对象?

1 个答案:

答案 0 :(得分:3)

除非你收到这些对象的数组,否则它会这样做。如果是这种情况,那么您可以使用MySampleClass[]

JSON在RFC 7159中定义。从这里:

  

对象是零个或多个名称/值的无序集合   对,,其中名称是字符串,值是字符串,数字,
  boolean,null,object或array。

(强调我的)

因此,JSON对象必须将字符串作为键,并且值可以是少数Object类型之一。