簡體   English   中英

如何以更好的方式為以下示例創建JSON

[英]How to create JSON in a better way for the below sample

我在哈希圖中有以下數據

{age={Middle-aged={yes=0.417, no=0.125}, youth={yes=0.25, no=0.5}, senior={yes=0.333, no=0.375}}}

我如何將此哈希圖轉換為json以下

{"age":{"data":[{"key":"yes","values":[{"name":"Middle-aged","value":0.417},{"name":"youth","value":0.25},{"name":"senior","value":0.33}]},{"key":"no","values":[{"name":"Middle-aged","value":0.125},{"name":"youth","value":0.5},{"name":"senior","value":93}]}]}}

為此,我需要像這樣對數據進行分組

是的-掌握所有是的值(中年,老年人,青年)

沒有grp的所有值(中年,老年人,青年)

然后創建一個POJO類? 或者我可以直接加載到POJO類中。

請提出一個更好的方法。

您可以使用POJO轉換為平面結構來對結構建模:

public class MyData{
    private String groupName;
    private String yesNoGroup;
    private double value;
    public MyData(String n, String g, double v){
        groupName=n;
        yesNoGroup=g;
        value=v;
    }
    // getter and setters
}

然后使用GSON或Jackson將它們轉換為JSON字符串

除了轉換外,我建議您將數據轉換為更扁平的結構。 您的現在看起來像是規范化的數據庫架構,但這在JSON中造成了太多層。 如果您可以對它進行非規范化並提供比“值”,“鍵”等更好的名稱,則JSON更具可讀性並且更易於轉換。

{
    "age":{
        "data":[
            {
                "key":"yes",
                "values":[
                    {
                        "name":"Middle-aged",
                        "value":0.417
                    },
                    {
                        "name":"youth",
                        "value":0.25
                    },
                    {
                        "name":"senior",
                        "value":0.33
                    }
                ]
            },
            {
                "key":"no",
                "values":[
                    {
                        "name":"Middle-aged",
                        "value":0.125
                    },
                    {
                        "name":"youth",
                        "value":0.5
                    },
                    {
                        "name":"senior",
                        "value":93
                    }
                ]
            }
        ]
    }
}

這樣的示例數據可以從“ MyData”的構造函數創建,例如

List<MyData> list=new List<MyData>();
list.add(new MyData("Middle-aged","yes",0.417));
list.add(new MyData("youth","yes",0.25));
list.add(new MyData("senior","yes",0.33));
list.add(new MyData("Middle-aged","no",0.125));
list.add(new MyData("youth","no",0.5));
list.add(new MyData("senior","no",93));

Gson g=new Gson();
String output=g.toJson(list);

這樣,您可以使同一數據表示的結構更扁平,這對於每個處理此數據的人都是有益的。

下面的結構將有助於獲取所需的json結構。

class Age {
    private List<Data> data;
    //getter setter
}

class Data {
    private String key;
    private List<Values> values;
    //getter setter
}

class Values {
    private String name;
    private String value;
    //getter setter
}

現在遍歷您的HashMap並將值填充到Age類的對象中。 然后,您可以使用GSON或Jackson將Age對象轉換為json字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM