繁体   English   中英

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

[英]How to ignore Map related braces while converting json to Java object using Jackson

我正在尝试将JSON转换为Java对象,但我很难构建Java等效对象。

我的JSON看起来像这样

{
    "point1": {
        "x": 1.0,
        "y": 2.0
    },
    "point2": {
        "x": 1.0,
        "y": 2.0
    },
    "point3": {
        "x": 1.0,
        "y": 2.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来映射它们:

标记注释,可用于定义非静态,双参数方法(属性的第一个参数名称,要设置的第二个值),用作从JSON内容中找到的所有其他无法识别的属性的“回退”处理程序。 它与行为中的XmlAnyElement类似; 并且只能用于表示每种类型的单个属性。

如果使用,则将来自JSON Object值的所有其他未映射的键值对添加到属性(Map或bean类型)。

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

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

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM