java 关于a.b.c和a[b[c转json的问题

问题遇到的现象和发生背景

我在做动态的参数时碰到了字符串转层级JSON问题(“.”表示对象关系,“[”表示数组关系)。

// 例: 键“a.b.c”,值“one” ——> {"a":{"b":{"c":"one"}}}
// 例: 键“a[b[c”,值“two” ——> {"a":[{"b":[{"c":"two"}]}]}

以上转化用了一段时间解决了,但却碰到了有“a[b.c”和“a.b[c”等情况,网上查了一堆,牛头不对马嘴,也可能是我表达不清楚而查不到,因此特来请教。

我的解答思路和尝试过的方法

无思路,但想到的都试过了。

我想要达到的结果

例:

// 键“a[b.c”,值“one” ——> {"a": [{"b": {"c": "one"}}]}
// 键“a.b[c”,值“two” ——> {"a": {"b": [{"c": "two"}]}}

注解:不知道上述问题我表达是否清楚了,大概就是字符串出现“.”和“[”混合使用时不知如何转。

js代码如下,题主可以按照下面的模式用java写一遍,依次遍历字符,然后提前取一下个字符判断是点还是[进行相关操作

img


    function getJSONStr(s,value) {
        var pre = [], end = [];
        for (var i = 0; i < s.length; i++) {
            var c = s.charAt(i);
            var next = i + 1 < s.length ? s.charAt(i + 1) : null;

            if (c != '[' && c != '.') {
                if (next == null) pre.push(`{"${c}":"${value}"}`);
                else {
                    if (next == '.') { pre.push(`{"${c}":`); end.unshift('}') }
                    else {
                        pre.push(`{"${c}":[`); end.unshift(']}')
                    }
                }
            }
        }
        return pre.join('') + end.join('')
    }
    console.log(getJSONStr('a.b.c.d.e.f', 'one'))
    console.log(getJSONStr('a[b.c', 'one'))
    console.log(getJSONStr('a.b[c', 'two'))
    console.log(getJSONStr('a.b[c.d', 'three'))
    console.log(getJSONStr('a[b.c.d[e', 'four'))

img

补充一下,字符串中字符不仅仅就三个,可能会有“a.b[c.d”和“a[b.c.d[e”等情况

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632