【问题标题】:JSON to Object MappingJSON 到对象映射
【发布时间】:2017-09-21 09:28:57
【问题描述】:
"statValues": {
                                "c__TL_gattooi": {
                                                "value": 90.0
                                },
                                "c_cwc_gattooi": {
                                                "value": 3462.0
                                },
                                "c_gaw__oxcgattooi": {
                                                "value": 11.0
                                },
                                "c_odesb__ox_gattooi": {
                                                "value": 6.0
                                },
                                "c_odesb_cwdc_gattooi": {
                                                "value": 205472.0
                                },
                                "c_ach38_sax_gattooi": {
                                                "value": 1.0
                                },
}

想要将此 JSON 转换为 POJO 以与 jackson 进行映射

【问题讨论】:

  • 那么你想出了什么 POJO 不起作用?
  • "c__TL_gattooi": {"value": 90.0}, c__TL_gattooi 这应该是常量 String 如果除了大括号中的值之外没有任何其他内容,为什么要使事情复杂化。将其简化为 @如果可以的话,将 987654323@ 作为 POJO。如果没有,那么您需要创建一个类型,其值为 Double 属性。您的类 statValues 将具有您提到的属性,其类型为 value,由你。

标签: java json jackson


【解决方案1】:

要从字符串 jsonSource 反序列化给定的 json,请使用类似

ObjectMapper mapper = new ObjectMapper();
Root root = mapper.readValue(jsonSource, Root.class);

我为你生成了 POJO

import java.util.HashMap;

class Root {
    private HashMap<String, Value> statValues = new HashMap<>();

    public HashMap<String, Value> getStatValues() {
        return statValues;
    }

    public void setStatValues(HashMap<String, Value> statValues) {
        this.statValues = statValues;
    }
}

class Value {
    double value;

    public double getValue() {
        return value;
    }

    public void setValue(double value) {
        this.value = value;
    }
}

如果可以提供更好的名称,则可以使用 @JsonProperty 重新映射属性

要访问值,请使用 root.get("c__TL_gattooi").getValue() 之类的东西,以获取键列表 - root.keys()

【讨论】:

  • 问题陈述是“c__TL_gattooi”这种值是随机的,它们至少有 700 个值不能创建一个类 kike 这个,
  • 这里也需要用jackson映射才需要使用jackson
  • 太棒了,你震撼了它,
猜你喜欢
  • 2019-05-27
  • 2012-07-12
  • 2012-04-23
  • 1970-01-01
  • 2014-11-07
  • 2017-12-24
  • 1970-01-01
  • 2013-04-17
  • 1970-01-01
相关资源
最近更新 更多