У меня ниже данных с hashmap
{age={Middle-aged={yes=0.417, no=0.125}, youth={yes=0.25, no=0.5}, senior={yes=0.333, no=0.375}}}
Как я могу преобразовать эту хэш-карту ниже 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}]}]}}
Для этого мне нужно сгруппировать свои данные, как это
yes- grp все да значения (средний возраст, старший, молодежь)
No-grp не имеет значения для (среднего возраста, старшего, молодого)
а затем создать класс POJO? Или я могу напрямую загрузить класс POJO.
Пожалуйста, предложите лучший способ.
Ниже структура будет полезна для получения требуемой структуры 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.
Вы можете смоделировать свою структуру, используя 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
}
Затем преобразуйте их в строку JSON, используя GSON или Jackson
Помимо преобразования, я бы предложил вам преобразовать данные в более плоскую структуру. Теперь вы выглядите как нормализованная схема базы данных, но это сделало слишком много слоев в 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<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);
Таким образом, вы можете иметь более плоскую структуру одного и того же представления данных, что хорошо для всех, кто обрабатывает эти данные.
attribute
,classLable
,distinctValue
... если вы хотите создать HashMap , то вы будете иметь к группе classLable и distinctValue и поместить его в качестве значения и атрибута в качестве ключа.