加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

使用Jackson将json转换为Java对象时如何忽略与Map相关的括号

发布时间:2020-12-14 19:26:23 所属栏目:Java 来源:网络整理
导读:我正在尝试将JSON转换为Java对象,但是在构建Java等效对象方面遇到了困难. 我的JSON看起来像这样 { "point1": { "x": 1.0,"y": 2.0 },"point2": { "x": 1.0,"point3": { "x": 1.0,"customobject1": "cust1","customobject2": "cust2"} 我需要在这里取点地图,

我正在尝试将JSON转换为Java对象,但是在构建Java等效对象方面遇到了困难.

我的JSON看起来像这样

{
    "point1": {
        "x": 1.0,"y": 2.0
    },"point2": {
        "x": 1.0,"point3": {
        "x": 1.0,"customobject1": "cust1","customobject2": "cust2"
}

我需要在这里取点地图,因为将有n个点,

public class Test {

    public String getCustomobject1() {
        return customobject1;
    }

    public void setCustomobject1(String customobject1) {
        this.customobject1 = customobject1;
    }

    public String getCustomobject2() {
        return customobject2;
    }

    public void setCustomobject2(String customobject2) {
        this.customobject2 = customobject2;
    }

    Map<String,Point> testing  = new HashMap<>();

    String customobject1;
    String customobject2; 

    public Map<String,Point> getTesting() {
        return testing;
    }

    public void setTesting(Map<String,Point> testing) {
        this.testing = testing;
    }

}

但是我遇到了无法识别的属性异常,我知道还有一个额外的包装器({})会导致此问题,有人可以建议我在反序列化JSON时如何忽略此映射名称吗?

注意:我正在使用的实际对象具有类似的结构,有点复杂,这里我只是发布一个原型.

最佳答案
如果您事先不知道按键,请使用@JsonAnySetter映射它们:

Marker annotation that can be used to define a non-static,two-argument method (first argument name of property,second value to set),to be used as a “fallback” handler for all otherwise unrecognized properties found from JSON content. It is similar to XmlAnyElement in behavior; and can only be used to denote a single property per type.

If used,all otherwise unmapped key-value pairs from JSON Object values are added to the property (of type Map or bean).

public class Test  {
  private Map<String,Point> points = new HashMap<>();

  @JsonAnySetter
  public void setPoints(String name,Point value) {
    points.put(name,value);
  }

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读