我有一个具有以下值的 multiMap:
a=1,b=2,c=3
我想用以下格式创建一个 JSON:
[{"data":["a","b","c"],"StaticData":"HELLO"},{"Categories":[1,2,3]}]
我正在尝试使用字符串缓冲区,但完全不知道如何仅对键和值进行循环以及如何在其间插入一些静态数据。
我想是否可以先创建一个字符串,然后以 json 格式解析,或者是否有其他方法来形成 json?
最佳答案
首先迭代 HashMap 以获取键和值并将其存储在 List 中。创建两个类,一个包含键列表和 staticData,另一个包含类别列表。在类对象中设置值,创建一个列表并将这两个类对象添加到列表中并将该列表序列化为 JSON。
我已经使用Gson Library将对象转换为 JSON 字符串。
这是您想要的代码。
数据类:
public class DataClass {
private List<String> data;
private String StaticData;
//your getter and setter method.
}
类别:
public class CategoryClass {
private List<String> Categories;
//your getter and setter method
}
测试类:
public static void main(String[] args) {
try{
Map<String, String> map = new HashMap<String, String>();
map.put("a", "1");
map.put("b", "2");
map.put("c", "3");
List<Object> obj = new ArrayList<Object>();
List<String> keys = new ArrayList<String>();
List<String> values = new ArrayList<String>();
for(Entry<String, String> myMap : map.entrySet()){
keys.add(myMap.getKey());
values.add(myMap.getValue());
}
DataClass dataObj = new DataClass();
dataObj.setData(keys);
dataObj.setStaticData("HELLO");
obj.add(dataObj);
CategoryClass catObj = new CategoryClass();
catObj.setCategories(values);
obj.add(catObj);
Gson gson = new Gson();
String jsonStr = gson.toJson(obj);
System.out.println(jsonStr);
}
catch(Exception ex){
ex.printStackTrace();
}
}
输出:
[{"data":["b","c","a"],"StaticData":"HELLO"},{"Categories":["2","3","1"]}]
编辑:
如果您需要维护 Map 中插入的顺序,请使用 LinkedHashMap,以便键和值的顺序与 Map 中插入的顺序相同。
关于java - 如何 "split"在不同 JSON 数组之间映射值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22189659/