多级映射到Java中的Json结构

问题描述

我正在尝试将多级别地图转换为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();

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...