gpt4 book ai didi

javascript - 如何从 JSON 字符串中检索多个属性值

转载 作者:行者123 更新时间:2023-11-30 16:14:33 24 4
gpt4 key购买 nike

我有一个 JSON 字符串:

x = '{"userId":"foo","traits":{"email":"foo@foobar.com"},"type":"identify"}'

我想从中获取某些值。我试过正则表达式:

到目前为止我有

anonId = x.match(/\"anonymous_id\"\:(.*?)/)?[1]
email = x.match(/\"email\"\:\"(.*?)\"/)?[1]
userId = x.match(/\"userId\"\:\"(.*?)\"/)?[1]
type = x.match(/\"type\"\:\"(.*?)\"/)?[1]

这是丑陋且低效的,但是当我尝试将它们结合起来时:

[_, a, b, c, d] = x.match(/\"anonymous_id\"\:(.*?)|\"userId\"\:(.*?)|\"email\"\:(.*?)|\"type\"\:(.*?)/g)

返回的结果是整个组,而不仅仅是匹配的部分。

我希望 a、b、c、d 等于键的值,但我得到:

Wanted:
**>> ["foo","foo@foobar.com","identify"]**
Actual results:
>> ["userId":"foo","email":"foo@foobar.com","type":"identify"]

有没有办法在一行正则表达式中实现这一点?

---更新----

我最终选择了

  rxp = /\"user_id\"\:\"(.*?)\"|\"anonymous_id\"\:\"(.*?)\"|\"type\"\:\"(.*?)\"/g

anonId = null
userId = null
type = null

while (arr = rxp.exec(bdy)) isnt null
userId = arr[1] if arr[1]
anonId = arr[2] if arr[2]
type = arr[3] if arr[3]

FWIW 我正在避免使用 JSON.parse,因为我正在处理数千个这样的数据,而且我只需要其中的一小部分,我不希望 JSON.parse 的缓慢对服务器造成不必要的影响。

最佳答案

try {
var parsed = JSON.parse(x);
anonId = parsed.anonymous_id;
} catch (ex) {
//invalid json
}

除非您输入了无效的 JSON,否则这应该有效。然后您可能想要考虑 Regex,但即使那样您也可能想要查看模板。

关于javascript - 如何从 JSON 字符串中检索多个属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35715851/

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