【发布时间】:2021-09-24 13:35:46
【问题描述】:
无论 JSON 对象结构如何(简单或复杂),将所有 url 从以下对象提取到数组中以在 Javascript 中迭代的理想方法是什么?
{
"url": "https://example.com:443/-/media/images/site/info",
"data": [
{
"id": "da56fac6-6907-4055-96b8-f8427d4c64fd",
"title": "AAAA 2021",
"time": "",
"dateStart": "2021-03-01T08:00:00Z",
"dateEnd": "2021-12-31T15:00:00Z",
"address": "",
"geo": {
"longitude": "",
"latitude": "",
"mapExternalLink": ""
},
"price": "Free Admission",
"masonryImage": "https://example.com:443/-/media/images/site/siteimages/tcsm2021/fullwidthbanner/tcsmfullwidthicecream.ashx",
"image": "https://example.com:443/-/media/images/site/siteimages/tcsm2021/fullwidthbanner/tcsmfullwidthicecream.ashx",
"showDateInfo": false,
"showDateInfoOnListings": false,
"showTimeInfo": false,
"showTimeInfoOnListings": false,
"tags": [
{
"key": "Lifestyle",
"name": "Lifestyle"
}
],
"partnerName": "",
"sort_data": {
"recommended": 0,
"recent": 3,
"partner": 0,
"popular": 0
}
}
]
}
我想得到一个数组中的结果,例如:
[
https://example.com:443/-/media/images/site/info,https://example.com:443/-/media/images/site/siteimages/tcsm2021/fullwidthbanner/tcsmfullwidthicecream.ashx, https://example.com:443/-/media/images/site/siteimages/tcsm2021/fullwidthbanner/tcsmfullwidthicecream.ashx
]
我知道我需要应用一些正则表达式来提取 url,但不确定如何将 json 对象视为字符串以进行正则表达式处理?
【问题讨论】:
-
一种方法是递归遍历 JSON 并将每个值与 URL 正则表达式模式匹配。
-
创建一个可以处理任何 json 结构(简单、复杂或深度嵌套)的递归方法听起来很复杂?
-
JSON 解析是一个已解决的问题。人们已经编写、测试和调试了处理这个问题的代码。这是我广泛使用的一个:github.com/blackflux/object-scan,或者使用 xPath 语法goessner.net/articles/JsonPath
标签: javascript json regex