java - 将带有嵌套字符的字符串转换为java中特定的json格式

标签 java json spring string spring-boot

有一个字符串:

String query = "param1, param2, param3{npam1, npam2, npam3{nipam1, nipam2}}";

该字符串需要按以下格式处理:

{

    param1: param1, 
    param2: param2, 
    param3: {

        npam1: param3.npam1, 
        npam2: param3.npam2, 
        npam3: {

            nipam1: param3.npam3.nipam1, 
            nipam2: param3.npam3.nipam2

        }

    }

}

已经完成了 2 次嵌套,但重点是要查询的字符串可以扩展到任意数量的嵌套 curl 。

最佳答案

我所做的是迭代字符串中的对象,然后迭代每个对象的属性。希望它能帮助您解决您的问题。另外,在您的初始字符串中,您缺少左括号和右括号,因此我添加了它们。

    String jsonWithOutFormat = "param1, param2, param3{npam1, npam2, npam3{nipam1, nipam2}}";
    jsonWithOutFormat = jsonWithOutFormat.replaceAll(" ", "");
    String json = "";
    String[] objectsInString = jsonWithOutFormat.split("[{]");
    List<String> nestedObjects = new ArrayList<>();
    json += "{";
    for (int i = 0; i < objectsInString.length; i++) {
        String[] objectAttributes = objectsInString[i].split("[,]");
        if(i==0)
            nestedObjects.add(objectAttributes[objectAttributes.length-1] + ".");
        else
            nestedObjects.add(nestedObjects.get(i-1)+objectAttributes[objectAttributes.length-1] + ".");
        for (int j = 0; j < objectAttributes.length; j++) {
            if(!(j == objectAttributes.length-1)) {
                if(i != 0)
                    json+=  objectAttributes[j] + ": " +  nestedObjects.get(i-1) + objectAttributes[j]  + ", ";
                else
                    json+=  objectAttributes[j] + "\"" + ": " + "\"" + objectAttributes[j] + "\"" + ", ";
            }
            else {
                if(!(i == objectsInString.length-1))
                    json+=  objectAttributes[j] + ": {";
                else {
                    json+= objectAttributes[j].replaceAll("}", "")  + ": " + nestedObjects.get(i-1) + objectAttributes[j];
                }
            }
        }
    }
    json += "}";
    System.out.print("\n" + json);
}

关于java - 将带有嵌套字符的字符串转换为java中特定的json格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59969226/

相关文章:

java - 集群中的拓扑是否可以写入本地文件系统上的 txt 文件? (在同一系统上运行的集群)

java - 如何从 JXTaskPane 中删除组件?

json - 使用 jq 从 json 文件中获取键值对

c# - ASP.Net Core Web API - ICollection 未显示在 JSON 结果集中

java - Spring 和 JPA 2.0 - 具有额外列的多对多关系中的复合键

java - 如何在使用 Java Jersey 客户端发送请求时启用 cookie?

java - 在 JSF 中显示 FacesMessage 并重新加载页面

javascript - 在 Ajax 调用中传递 Json.Net 对象

spring - AppEngine + CloudSQL + hibernate : @Transactional is forbidden

java - 从 Spring JMS 捕获 MQ 关闭事件