如何用 Xidel 正确读取这个 JSON 文件?
How to read correctly this JSON file with Xidel?
请原谅我的英语,我不是母语人士
我有一个 json 文件“VideoJson.json”,其中包含以下内容
VideoJSONLoaded({"video_type": "0","image_id": "0","profile": false,"published_urls": [{"embed_url": "https://alura.hls/vod/p/manifest/55.mpd","protocol": "https","cdn_name": "Cloud","state": 10,"live_url": "https://alura.hls/vod/p/manifest/55.mpd"}],"access_rules": "{}","timed_cues": [],"embedded_cc": 1,"adst_temp_ver": "2"})
我尝试使用 Xidel 使用以下命令阅读 json
xidel-0.9.8.x32 "VideoJson.json" -e "$json"
我收到一条错误消息
Error: jerr:JNDY0021: error at VideoJSONLoaded (tkIdentifier) in VideoJSONLoaded...
我认为这是因为 json 在 VideoJSONLoaded(JSON)
里面
我应该使用什么命令才能正确读取 json 并提取数据?
无论为您提供什么工具,这个文件都做得不好,因为它根本不是 JSON。
当您打开“*.json”文件时,xidel
假定为 JSON (--input-format=json
)。如果不是,则必须使用 --input-format=text
(--input-format=html
for v0.9.8)覆盖它:
xidel -s --input-format=text "VideoJson.json" -e "$raw"
VideoJSONLoaded({"video_type": "0",[...],"adst_temp_ver": "2"})
要提取 JSON,您可以使用 substring-before()
和 substring-after()
:
xidel -s --input-format=text "VideoJson.json" -e "substring-before(substring-after($raw,'VideoJSONLoaded('),')')"
{"video_type": "0",[...],"adst_temp_ver": "2"}
或extract()
:
xidel -s --input-format=text "VideoJson.json" -e "extract($raw,'\{.+\}')"
{"video_type": "0",[...],"adst_temp_ver": "2"}
最后 parse-json()
(json()
for v0.9.8)解析 JSON:
xidel -s --input-format=text "VideoJson.json" -e "parse-json(extract($raw,'\{.+\}'))"
{
"video_type": "0",
"image_id": "0",
"profile": false,
"published_urls": [
{
"embed_url": "https://alura.hls/vod/p/manifest/55.mpd",
"protocol": "https",
"cdn_name": "Cloud",
"state": 10,
"live_url": "https://alura.hls/vod/p/manifest/55.mpd"
}
],
"access_rules": "{}",
"timed_cues": [],
"embedded_cc": 1,
"adst_temp_ver": "2"
}
请原谅我的英语,我不是母语人士
我有一个 json 文件“VideoJson.json”,其中包含以下内容
VideoJSONLoaded({"video_type": "0","image_id": "0","profile": false,"published_urls": [{"embed_url": "https://alura.hls/vod/p/manifest/55.mpd","protocol": "https","cdn_name": "Cloud","state": 10,"live_url": "https://alura.hls/vod/p/manifest/55.mpd"}],"access_rules": "{}","timed_cues": [],"embedded_cc": 1,"adst_temp_ver": "2"})
我尝试使用 Xidel 使用以下命令阅读 json
xidel-0.9.8.x32 "VideoJson.json" -e "$json"
我收到一条错误消息
Error: jerr:JNDY0021: error at VideoJSONLoaded (tkIdentifier) in VideoJSONLoaded...
我认为这是因为 json 在 VideoJSONLoaded(JSON)
我应该使用什么命令才能正确读取 json 并提取数据?
无论为您提供什么工具,这个文件都做得不好,因为它根本不是 JSON。
当您打开“*.json”文件时,xidel
假定为 JSON (--input-format=json
)。如果不是,则必须使用 --input-format=text
(--input-format=html
for v0.9.8)覆盖它:
xidel -s --input-format=text "VideoJson.json" -e "$raw"
VideoJSONLoaded({"video_type": "0",[...],"adst_temp_ver": "2"})
要提取 JSON,您可以使用 substring-before()
和 substring-after()
:
xidel -s --input-format=text "VideoJson.json" -e "substring-before(substring-after($raw,'VideoJSONLoaded('),')')"
{"video_type": "0",[...],"adst_temp_ver": "2"}
或extract()
:
xidel -s --input-format=text "VideoJson.json" -e "extract($raw,'\{.+\}')"
{"video_type": "0",[...],"adst_temp_ver": "2"}
最后 parse-json()
(json()
for v0.9.8)解析 JSON:
xidel -s --input-format=text "VideoJson.json" -e "parse-json(extract($raw,'\{.+\}'))"
{
"video_type": "0",
"image_id": "0",
"profile": false,
"published_urls": [
{
"embed_url": "https://alura.hls/vod/p/manifest/55.mpd",
"protocol": "https",
"cdn_name": "Cloud",
"state": 10,
"live_url": "https://alura.hls/vod/p/manifest/55.mpd"
}
],
"access_rules": "{}",
"timed_cues": [],
"embedded_cc": 1,
"adst_temp_ver": "2"
}