问题描述
我正在尝试将多级别地图转换为Json,其中地图的级别可以是任意级别。例如
我有类似的地图
Map m = new LinkedHashMap();
m.put("data.test[1].tool",6);
m.put("data.test[1].sets",8);
m.put("data.test[2].tool",9);
m.put("data.test[2].sets",12);
m.put("data.tem[1].use[1]",6);
m.put("data.tem[1].use[2]",9);
m.put("data.tut.seh",6)
我想将其转换为
{
"data": {
"test": [
{
"tool": 6,"sets": 8
},{
"tool": 9,"sets": 12
}
],"tem": [
{
"use": [
6,9
]
}
],"tut": {
"seh": 6
}
}
}
像维护顺序的json之类的东西(如值6和8)属于测试的第一个索引,因此它们应该首先出现,而第二个数组应该在测试数组中带有9和12。由于此json稍后将用于根据索引检索确切值。
如果有人可以给我一些想法。预先感谢。
解决方法
您可以尝试使用Bean类存储数据并从那里获取数据, 我在那里被尝试过,它可能会对您有帮助!
import java.util.*;
public class Test {
public static void main(String[] args){
System.out.println("Hello World");
/* your code
Map m = new LinkedHashMap();
m.put("data.test[1].tool",6);
m.put("data.test[1].sets",8);
m.put("data.test[2].tool",9);
m.put("data.test[2].sets",12);
m.put("data.tem[1].use[1]",6);
m.put("data.tem[1].use[2]",9);
m.put("data.tut.seh",6);
System.out.println(m);
*/
Map m1 = new LinkedHashMap();
List<String> list = new ArrayList<String>();
list.add("listItem1");
m1.put(new BeanToMap("withList",list),"mapValueWithList");
m1.put(new BeanToMap("test"),"test");
System.out.println(m1);
}
}
Bean类是:
import java.util.*;
public class BeanToMap {
private String name;
private List<String> cars = new ArrayList<String>();
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public BeanToMap(String name,List<String> cars) {
this.name = name;
this.cars = cars;
}
public BeanToMap(String name) {
this.name = name;
}
public List<String> getCars() {
return cars;
}
public void setCars(List<String> cars) {
this.cars = cars;
}
}
您可以将所有值设置为字符串,然后可以使用
JSONObject json = new JSONObject();