不正经码猿 2022-03-05 16:41 采纳率: 100%
浏览 100
已结题

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"}]}}

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

  • 写回答

3条回答 默认 最新

  • CSDN专家-showbo 2022-03-05 21:13
    关注

    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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月13日
  • 已采纳回答 3月5日
  • 创建了问题 3月5日

悬赏问题

  • ¥15 luckysheet
  • ¥25 关于##爬虫##的问题,如何解决?:
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码
  • ¥50 随机森林与房贷信用风险模型
  • ¥50 buildozer打包kivy app失败
  • ¥30 在vs2022里运行python代码
  • ¥15 不同尺寸货物如何寻找合适的包装箱型谱
  • ¥15 求解 yolo算法问题