不正经码猿 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 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)