将点分隔的字符串转换为JSON对象

罗汉

所以我有一个点分隔的字符串,我试图将其转换为JAVA中的JSON对象。结构如下。

Person.City.FirstNm.LastNm=xyz, Person.City.Address=abc. Person.City.firstNm.Salary=1000.24, Person.State.FirstNm.LastNm=xyz

等等。生成的JSON应该是这样的。请注意,值中可以有一个小数点。

{
    Person:
    {
        City:
        {
            firstNm:
            {
                LastNm:xyz,
                        Salary:1000.24
            },
            Address: abc
        },
        State:
        {
            FirstNm:
            {
                LastNm:xyz
            }
        }
    }
}

我试图从字符串中制作一个Map,然后用它来制作一个JSON字符串,我可以用它来作为对象,但是没有运气。任何帮助,将不胜感激。谢谢

索洛拉德

您需要构建用于存储对象的树状结构。比,仅toString()此而已。以下是我如何看待您的方法:

public class TestJson {
    static abstract class Node {
    }

    static class IntermediateNode extends Node {
        public Map<String, Node> keyValueMap = new LinkedHashMap<>();

        @Override
        public String toString() {
            StringBuilder sb = new StringBuilder();
            sb.append("{");
            sb.append(keyValueMap.entrySet().stream().map(entry -> entry.getKey() + " : " + entry.getValue())
                       .collect(Collectors.joining(", ")));

            sb.append("}");
            return sb.toString();
        }
    }


    static class LeafNode extends Node {
        public String value;

        @Override
        public String toString() {
            return value;
        }
    }


    public static void main(String[] args) {
        String testString =
                "Person.City.FirstNm.LastNm=xyz, Person.City.Address=abc, Person.City.FirstNm.Salary=1000.24, Person"
                + ".State.FirstNm.LastNm=xyz";

        IntermediateNode root = new IntermediateNode();
        for (String param : testString.replaceAll(" ", "").split(",")) {
            String[] def = param.split("=");

            String[] result = def[0].split("\\.");
            IntermediateNode currentNode = root;
            for (int i = 0; i < result.length - 1; i++) {
                Node node = currentNode.keyValueMap.get(result[i]);
                if (node == null) {
                    IntermediateNode child = new IntermediateNode();
                    currentNode.keyValueMap.put(result[i].trim(), child);
                    currentNode = child;
                } else {
                    currentNode = (IntermediateNode) node;
                }
            }
            LeafNode leaf = new LeafNode();
            leaf.value = def[1];
            currentNode.keyValueMap.put(result[result.length - 1], leaf);
        }

        System.out.println(root);
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

JS将点分隔的字符串转换为分层对象

来自分类Dev

将JSON对象中用逗号分隔的字符串转换为数组

来自分类Dev

将逗号分隔的字符串转换为 JSON

来自分类Dev

PHP将逗号分隔的字符串转换为点或符号分隔的值,以存储在MySql中

来自分类Dev

javascript将JSON字符串转换为JSON对象

来自分类Dev

无法将 json 字符串转换为 json 对象

来自分类Dev

Spring - 将 JSON 字符串转换为 JSON 对象

来自分类Dev

Javascript:将以点分隔的字符串转换为嵌套的对象值

来自分类Dev

如何将逗号分隔的字符串转换为对象内的分隔数组?

来自分类Dev

将JSON对象数组转换为字符串

来自分类Dev

将打字稿对象转换为json字符串

来自分类Dev

ExpressJS / AngularJS:将JSON对象转换为字符串

来自分类Dev

将字符串转换为Javascript中的JSON对象

来自分类Dev

将HTML字符串转换为JSON对象

来自分类Dev

无法将JSON字符串转换为对象?

来自分类Dev

将jira json字符串转换为java对象

来自分类Dev

将JSON字符串转换为对象Javascript

来自分类Dev

将字符串转换为JSON对象C#

来自分类Dev

将字符串转换为Javascript中的JSON对象

来自分类Dev

无法将空字符串转换为JSON对象

来自分类Dev

ExpressJS / AngularJS:将JSON对象转换为字符串

来自分类Dev

使用Java将字符串转换为JSON对象

来自分类Dev

将JSON字符串转换为对象

来自分类Dev

将Python对象转换为JSON字符串

来自分类Dev

将字符串转换为JSON对象

来自分类Dev

将 JSON 字符串转换为 JS 对象

来自分类Dev

将解密后的字符串转换为 JSON 对象

来自分类Dev

C#:将字符串从数组转换为双wih点分隔符

来自分类Dev

如何将 JavaScript 数组(或分隔字符串)转换为带有子对象的对象

Related 相关文章

热门标签

归档