简体   繁体   English

如何以更好的方式为以下示例创建JSON

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

I have below data with in hashmap 我在哈希图中有以下数据

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

How can I convert this hashmap to below 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}]}]}}

To do so should I need to group my data like this 为此,我需要像这样对数据进行分组

yes- grp all yes values(middle-aged, senior,youth) 是的-掌握所有是的值(中年,老年人,青年)

No-grp all no values for(middle-aged,senior,youth) 没有grp的所有值(中年,老年人,青年)

and then create a POJO class ? 然后创建一个POJO类? Or I can directly load into POJO class. 或者我可以直接加载到POJO类中。

Please suggest a better way. 请提出一个更好的方法。

You can model your structure using a POJO to convert to a flat structure: 您可以使用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
}

Then convert them into JSON string using GSON or Jackson 然后使用GSON或Jackson将它们转换为JSON字符串

Apart from the conversion, I would suggest you convert data into a flatter structure. 除了转换外,我建议您将数据转换为更扁平的结构。 Yours now look like a normalised database schema, but this made too many layers in the JSON. 您的现在看起来像是规范化的数据库架构,但这在JSON中造成了太多层。 If you could denormalise it and give better names than "value", "key" and etc, the JSON would be more readable and easier for conversion. 如果您可以对它进行非规范化并提供比“值”,“键”等更好的名称,则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
                    }
                ]
            }
        ]
    }
}

Such sample data can be created from the constructor of "MyData" like 这样的示例数据可以从“ 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);

In this way, you can have a flatter structure of the same data representation, which is good for everyone handling this data. 这样,您可以使同一数据表示的结构更扁平,这对于每个处理此数据的人都是有益的。

Below structure will be useful to get the required json structure. 下面的结构将有助于获取所需的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
}

Now iterate through your HashMap and fill the values in object of class Age. 现在遍历您的HashMap并将值填充到Age类的对象中。 And then you can use GSON or Jackson to convert Age object into json string. 然后,您可以使用GSON或Jackson将Age对象转换为json字符串。

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

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