St0n233 2021-09-14 16:09 采纳率: 50%
浏览 103

正则表达式匹配json字符串中多个{}中符合条件的{}

本人现在的需求是要使用正则表达式匹配json字符串中符合条件的一对{},{}内的name属性为_id如下图

img

样例:
{"fields":[{"metadata":{},"name":"id","nullable":true,"type":"integer"},{"metadata":{},"name":"_id","nullable":true,"type":"string"},{"metadata":{},"name":"test","nullable":true,"type":"string"},{"metadata":{},"name":"age","nullable":true,"type":"integer"},{"metadata":{},"name":"name","nullable":true,"type":"string"},{"metadata":{},"name":"testnum","nullable":true,"type":"decimal(19,0)"}],"type":"struct"}

请教下大家,感谢

  • 写回答

1条回答 默认 最新

  • tonyzhangcn 2021-09-14 16:42
    关注

    直接对象便利岂不是更方便?更准确?为什么必须要用正则表达式呢?

    
    let data={"fields":[{"metadata":{},"name":"id","nullable":true,"type":"integer"},{"metadata":{},"name":"_id","nullable":true,"type":"string"},{"metadata":{},"name":"test","nullable":true,"type":"string"},{"metadata":{},"name":"age","nullable":true,"type":"integer"},{"metadata":{},"name":"name","nullable":true,"type":"string"},{"metadata":{},"name":"testnum","nullable":true,"type":"decimal(19,0)"}],"type":"struct"};
    
    let result = null;
    data.fields.forEach(v=>{ 
        if(v.name==="_id"){
          result = v;
        }
    });
    //此时result 为 {"metadata": {},"name": "_id","nullable": true,"type": "string"},成功拿到了想要的数据
    //如果想要将其转换成字符串,用下面的办法
    
    let result_str = JSON.stringify(result);
    
    评论

报告相同问题?

问题事件

  • 创建了问题 9月14日