簡體   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