我有下面的数据在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}]}]}}要这样做,我是否需要像这样分组我的数据
是的- grp所有的价值观(中年人、老年人、青年)
无grp对(中年、老年人、青年)毫无价值
然后创建一个POJO类?或者我可以直接加载到POJO类。
请提出更好的办法。
发布于 2014-12-25 03:05:49
您可以使用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中造成了太多的层。如果您可以对其进行去角色化,并给出比"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);通过这种方式,您可以拥有相同数据表示的更平坦的结构,这对处理此数据的每个人都有好处。
发布于 2014-12-25 11:46:03
下面的结构对于获得所需的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并填充类年龄对象中的值。然后可以使用GSON或Jackson将老年对象转换为json字符串。
https://stackoverflow.com/questions/27643784
复制相似问题