【问题标题】:create json based on comma separated string in java?在java中基于逗号分隔的字符串创建json?
【发布时间】:2020-04-06 17:02:53
【问题描述】:

在下面给出的文件中输入数据

1985,Adv,Blue
1985,Adv,gill
1985,Adv,mon
1985,Cal,20
1985,Cal,25
1985,Cape,Din
1966,Ray,One
1966,Ray,bel
1966,Ray,Reb
1966,Sum,37
1966,Tar,Black
1966,Tar,Watch
1967,Yachts,Nut
1967,Yachts,Shark
1967,Cal,20
1967,Cal,25
1967,Cal,28

预期输出为带有格式数据的 json 文件,例如

{
    "1985" : {
        "Adv" : ["Blue", "gill", "mon"],
        "Cal" : ["20", "25"],
        "Cape" : ["Din"]
    },
    "1966" : {
        "Ray" : ["One", "bel", "Reb"],
        "Sum" : ["37"],
        "Tar" : ["Black", "Watch"]
    },
    "1967" : {
        "Yachts" : ["Nut", "Shark"],
        "Cal" : ["20", "25", "28"]
    }
}

我有超过 1000 行数据。需要使用一些循环。如何在java中做到这一点

【问题讨论】:

  • 到目前为止您尝试过什么?你能展示你的代码吗?

标签: java json string split


【解决方案1】:

需要导入外部库org.json.JSONObject

 File myObj = new File("test.txt");
            Scanner myReader = new Scanner(myObj);
            List<String> stringList = new ArrayList<>();
            while (myReader.hasNextLine()) {
                String data = myReader.nextLine();
                stringList.add(data);
            }
            Map<String, Map<String,List<String>>> mapStringToObject = new HashMap<>();
            for(String string : stringList){
                String[] data = string.split(",");
                if(!mapStringToObject.containsKey(data[0])){
                    Map<String,List<String>>  mapOfLists = new HashMap<>();
                    List<String> list = new ArrayList<>();
                    list.add(data[2]);
                    mapOfLists.put(data[1],list);
                    mapStringToObject.put(data[0],mapOfLists);
                }else{
                    if(!mapStringToObject.get(data[0]).containsKey(data[1])){
                        List<String> list = new ArrayList<>();
                        list.add(data[2]);
                        mapStringToObject.get(data[0]).put(data[1],list);
                    }else
                        mapStringToObject.get(data[0]).get(data[1]).add(data[2]);
                }
            }
            JSONObject json = new JSONObject(mapStringToObject);
            System.out.println(json);
            myReader.close();

test.txt

1985,Adv,Blue
1985,Adv,gill
1985,Adv,mon
1985,Cal,20
1985,Cal,25
1985,Cape,Din
1966,Ray,One
1966,Ray,bel
1966,Ray,Reb
1966,Sum,37
1966,Tar,Black
1966,Tar,Watch
1967,Yachts,Nut
1967,Yachts,Shark
1967,Cal,20
1967,Cal,25
1967,Cal,28

【讨论】:

  • 谢谢。很好的努力。
猜你喜欢
  • 2011-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多