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

标签 java json string split

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

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/

相关文章:

javascript - 从基于文本的内容中删除某些 html 标签

java - 如何用资源链接替换 ​​Swagger 的枚举?

java - insert upto 中的语法错误?访问权限

c# - 从 HttpResponseMessage 返回的 JSON 中获取 API 值

javascript - 如何获取动态创建的输入字段的值(Json)

java - 将字符串从特定字符替换为特定字符

c - C语言如何从文件中读取数据?

java - 性能差异 : initialize and override in an if-else block, 还是额外的 "else"?

java - Spring Boot 安全性在登录失败后显示 Http-Basic-Auth 弹出窗口

json - Ambari hadoop集群+修改配置的最佳方式