gpt4 book ai didi

java - 在java中基于逗号分隔的字符串创建json?

转载 作者:行者123 更新时间:2023-12-02 00:58:05 25 4
gpt4 key购买 nike

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

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中做到这一点

最佳答案

您需要导入外部库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();

测试.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

关于java - 在java中基于逗号分隔的字符串创建json?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61065033/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com