Java 如何为下面的示例更好地创建JSON
我在hashmap中有以下数据Java 如何为下面的示例更好地创建JSON,java,json,Java,Json,我在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":
{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类中
请建议一种更好的方法。您可以使用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 List=新列表();
添加(新MyData(“中年”、“是”,0.417));
增加(新的MyData(“青年”,“是”,0.25));
列表。添加(新的MyData(“高级”,“是”,0.33));
增加(新的MyData(“中年”,“否”,0.125));
增加(新的MyData(“青年”,“否”,0.5));
添加(新的MyData(“高级”、“否”、93));
Gson g=新的Gson();
字符串输出=g.toJson(列表);
通过这种方式,您可以拥有相同数据表示形式的更平坦的结构,这对处理此数据的每个人都有好处。下面的结构将有助于获得所需的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并填充class Age对象中的值。然后,您可以使用GSON或Jackson将Age对象转换为json字符串。您只需要此结构吗?或者您想让它更具可读性?因为有3个值
属性
,类标签
,差异值
。。。如果您想创建一个hashMap,那么您必须将classLable和distinctValue分组,并将其作为值和属性作为键。@NamanGala:请查看我的更新您期望的json是{“age”:{“data”:[{“key”:“yes”,“values”:[{“name”:“Middle agreed”,“value”:0.417},{“name”:“youth”,“value”:0.25},{“name”:“senior”,“value”:0.33},{“key”:“no”,“values”:[{“姓名”:“中年”,“价值”:0.125},{“姓名”:“青年”,“价值”:0.5},{“姓名”:“高级”,“价值”:93}]}}}}
?是的,这是我期望的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
}