按accolade拆分json字符串并保留accolade

nwlls2ji  于 2022-11-26  发布在  其他
关注(0)|答案(2)|浏览(117)

我想按“{”进行拆分并保留“{"。
结果应该是一个数组:

[
"{  \""text\" : \"alinea 1\", \"type\" : \"paragraph\"  }",
"{  \""text\" : \"alinea 2\", \"type\" : \"paragraph\"  }"
]

我目前得到的代码是:

("{    \"text\": \"alinea 1\",    \"type\": \"paragraph\"  },  {    \"text\": \"alinea2\",    \"type\": \"paragraph\"  }").split(/([?={?>={]+)/g)

但输出并不像预期的那样:

我不是一个英雄与regex...并试图摆弄一点:Javascript and regex: split string and keep the separator

vtwuwzda

vtwuwzda1#

请在使用JSON.parse之前在服务器上修复或在[]中 Package ,以获得我期望的您实际想要的内容

const str = `{    \"text\": \"alinea 1\",    \"type\": \"paragraph\"  },  {    \"text\": \"alinea2\",    \"type\": \"paragraph\"  }`
console.log(JSON.parse(`[${str}]`))
xlpyo6sf

xlpyo6sf2#

显然,在生产环境中,您可能希望使用原生JSON操作,但作为练习,您可以这样做,这看起来非常接近您的要求。(注意,此处使用的正lookahead非常糟糕,因为它很好地匹配了一个空字符串。将,?更改为(?:(,|$)),以使其不那么糟糕)

    • 注意**:JSON不是正则语言。使用正则表达式解析它是在请求Zalgo的访问。
input = "{    \"text\": \"alinea 1\",    \"type\": \"paragraph\"  },  {    \"text\": \"alinea2\",    \"type\": \"paragraph\"  }"

pattern = /(?<obj>{[^}]*})(?=\s*(?:,?))/g
output = [...input.matchAll(pattern)].map( match => match.groups.obj )
console.log(output)

相关问题