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

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 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化