gpt4 book ai didi

javascript - 如何在 Javascript 中解析一串键/值对,键/值对之间用逗号分隔?

转载 作者:行者123 更新时间:2023-12-03 08:44:53 24 4
gpt4 key购买 nike

我希望能够解析诸如刺痛

'a=1, b="two", c=[1,"two", {"a":1}]'

转换为 JSON 字符串或 Javascript 对象,例如

{ 
"a": 1,
"b": "two",
"c": [1, "two", {"a":1}]
}

这个问题类似于Parse string having key=value pairs as JSONJavascript Parsing Key Value String to JSON ,但是用逗号分隔 KV 对是有挑战性的,因为值本身可以有逗号。

建议?现有的包?

最佳答案

您可以使用此正则表达式查找字符串中的所有 key=value 对:

([a-z]\w*)=((?:[^"]|"[^"]+")+?)(?=,\s*[a-z]\w*=|$)

Regex demo on regex101

它查找一个标识符(我假设它们是一个字母后跟一个或多个单词字符,您可以调整以适应),后跟一个 =,然后是一串非 -引用字符或引用字符串。然后使用前瞻来断言后面跟着一个逗号、一些空格和一个带有 = 的标识符或字符串结尾。

将行拆分为键/值对后,您可以从中构造 JSON 元素,将所有元素连接在一起形成 JSON 字符串并解析它:

const str = 'a=1, b="two", c=[1,"two", {"a":1}]';

const regex = /([a-z]\w*)=((?:[^"]|"[^"]+")+?)(?=,\s*[a-z]\w*=|$)/g

let m;
let els = [];

while ((m = regex.exec(str)) !== null) {
els.push(`"${m[1]}": ${m[2]}`);
}

const json = '{' + els.join(',') + '}';

const obj = JSON.parse(json);
console.log(obj);

关于javascript - 如何在 Javascript 中解析一串键/值对,键/值对之间用逗号分隔?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61881315/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com