我在hashmap中有以下数据
{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
以下{"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}]}]}}
要这样做,我是否需要像这样分组我的数据
是 - 所有是的价值观(中年,大四,青年)
No-grp没有(中年,大四,青年)的价值
然后创建一个POJO类? 或者我可以直接加载到POJO类。
请建议一个更好的方法。
答案 0 :(得分:0)
您可以使用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中创建了太多层。如果你可以对它进行非规范化并给出比#34; value"," key"更好的名字。等等,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);
通过这种方式,您可以拥有相同数据表示的更平坦的结构,这对处理此数据的每个人都有好处。
答案 1 :(得分:0)
下面的结构对于获取所需的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字符串。