首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更好地为下面的示例创建JSON

如何更好地为下面的示例创建JSON
EN

Stack Overflow用户
提问于 2014-12-25 02:33:38
回答 2查看 166关注 0票数 1

我有下面的数据在hashmap中

代码语言:javascript
复制
{age={Middle-aged={yes=0.417, no=0.125}, youth={yes=0.25, no=0.5}, senior={yes=0.333, no=0.375}}}

如何将此hashmap转换为json下面的

代码语言:javascript
复制
{"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所有的价值观(中年人、老年人、青年)

无grp对(中年、老年人、青年)毫无价值

然后创建一个POJO类?或者我可以直接加载到POJO类。

请提出更好的办法。

EN

回答 2

Stack Overflow用户

发布于 2014-12-25 03:05:49

您可以使用POJO对结构进行建模,以将其转换为平面结构:

代码语言:javascript
复制
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中造成了太多的层。如果您可以对其进行去角色化,并给出比"value“、"key”等更好的名称,那么JSON将更易读,更易于转换。

代码语言:javascript
复制
{
    "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“的构造函数中创建,如

代码语言:javascript
复制
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);

通过这种方式,您可以拥有相同数据表示的更平坦的结构,这对处理此数据的每个人都有好处。

票数 0
EN

Stack Overflow用户

发布于 2014-12-25 11:46:03

下面的结构对于获得所需的json结构非常有用。

代码语言:javascript
复制
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并填充类年龄对象中的值。然后可以使用GSON或Jackson将老年对象转换为json字符串。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27643784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档