【问题标题】:Jackson parse named object into the same class [duplicate]杰克逊将命名对象解析为同一类[重复]
【发布时间】:2016-03-21 08:53:50
【问题描述】:

使用 Jackson 如何解析以下 JSON:

{
    "foos" : [
        "one" : {
            "prop1" : "11",
            "prop2" : "11"
        },
        "two" : {
            "prop1" : "21",
            "prop2" : "21"
        },
        "three",
        "four"
    ]
}

进入这些类:

public class Root {
    private Set<Foo> foos;
    // ... getter and setter
}
public class Foo {
    private String name; // this should contain the JSON name, e.g.: "one", "two", "three" 
    private String prop1;
    private String prop2;
    // ... getters and setters
}

关于 JSON,我更喜欢命名对象而不是:

"foos" : [
    {
        "name" : "one",
        "prop1" : "11",
        "prop2" : "11"
    },
    {
        "name" : "two",
        "prop1" : "21",
        "prop2" : "21"
    },
    {
        "name" : "three"
    },
    {
        "name" : "four"
    }
]

因为大部分 foo 都不包含其他属性,所以不知道第一个 JSON 是不是不太正确,但更简洁。

【问题讨论】:

    标签: java json jackson


    【解决方案1】:

    在这种情况下,Map 符合目的

    public class Root {
        private Set<Foo> foos;
        // ... getter and setter
    }
    
    public class Foo {
        Map<String, InternalFooProps> map = new HashMap<>();    
        class InternalFooProps{
            private String prop1;
            private String prop2;
            // ... getters and setters
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多