[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 新人求助BAT如何取JSON对象

本帖最后由 jkpan 于 2021-8-15 14:58 编辑

BAT发起get请求返回 JSON数据如何取JSON对象?
比如我发起一个请求
https://json.m3u8.tv:7788/json.php?url=https://v.qq.com/x/cover/mzc00200lxzhhqz/w0040l6kwqw.html

返回数据如下

{"code":200,"url":"https:\/\/cdn.oss-cn-hangzhou.myqcloud.com.xuetuiguang.cn\/m3u8video\/shfb07.m3u8","type":"hls","player":"M3U8.TV","msg":"\u6570\u636e\u6b63\u5e38","title":"\u76f4\u94feM3U8\u64ad\u653e"}

我需要把: code、url、type、player 的对象值取出来赋值给变量怎么写,求大佬赐教、这玩意没Linux的好写的
求助要最简单,且不用安装其他扩展的方法!
win下awk、sed、grep、好像都要安装,有其他方法吗,比如字符串截取,先删除URL:然后再删除尾部的,以后的内容,又或者时取两个字符中间文本,不会BAT求助

回复 9# jkpan
  1. 1<1/* :
  2. @echo off
  3. echo;"{"code":200,"url":"https:\/\/cdn.oss-cn-hangzhou.myqcloud.com.xuetuiguang.cn\/m3u8video\/shfb07.m3u8","type":"hls","player":"M3U8.TV","msg":"\u6570\u636e\u6b63\u5e38","title":"\u76f4\u94feM3U8\u64ad\u653e"}"|cscript /nologo /e:jscript "%~f0"
  4. pause
  5. goto :eof
  6. */
  7. var stdout=WScript.StdOut,stdin=WScript.StdIn;
  8. var reg=/.*url":"(.*?)".*/;
  9. var reg1=/.*type":"(.*?)".*/;
  10. var reg2=/.*code":(.*?),".*/;
  11. while (!stdin.AtEndOfStream){
  12. var str = stdin.ReadLine();
  13. if(reg.test(str))stdout.WriteLine(str.replace(reg, '$1'));
  14. if(reg1.test(str))stdout.WriteLine(str.replace(reg1, '$1'));
  15. if(reg2.test(str))stdout.WriteLine(str.replace(reg2, '$1'));
  16. }
复制代码

TOP

我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

本帖最后由 jkpan 于 2021-8-15 20:23 编辑

回复 6# idwma
win10  果然可以   我学习学习  套一下看能不能搞再来请教呢!已经快接近成功了,只是我返回值有可能顺序和这个不一样,如果能以CODE  URL   TYPE这眼的关键词去取就完美了

TOP

回复 7# newswan


大佬这个好像在CMD命令行跑不了,
其实我就是想发起一个GET请求  返回取返回的URL和CODE   TYPE的值赋值给一个变量,看来是没法搞了
https://json.m3u8.tv:7788/json.php?url=https://v.qq.com/x/cover/mzc00200lxzhhqz/w0040l6kwqw.html
返回数据如下
{"code":200,"url":"https:\/\/cdn.oss-cn-hangzhou.myqcloud.com.xuetuiguang.cn\/m3u8video\/shfb07.m3u8","type":"hls","player":"M3U8.TV","msg":"\u6570\u636e\u6b63\u5e38","title":"\u76f4\u94feM3U8\u64ad\u653e"}
我需要把: code、url、type、player 的对象值取出来赋值给变量怎么写

TOP

回复 5# jkpan
  1. @cd /d %~dp0 & powershell -NoProfile -ExecutionPolicy Bypass -command "Get-Content '%~f0' | Select-Object -Skip 1 | Out-String | Invoke-Expression" & pause & exit/b
  2. $file =  "1.txt"
  3. (get-content -path $file | ConvertFrom-Json ).url
复制代码

TOP

  1. @echo off
  2. for /f tokens^=2^,4^,5^,7^ delims^=^:^,^"^{^} %%a in ('"echo;{"code":200,"url":"https:\/\/cdn.oss-cn-hangzhou.myqcloud.com.xuetuiguang.cn\/m3u8video\/shfb07.m3u8","type":"hls","player":"M3U8.TV","msg":"\u6570\u636e\u6b63\u5e38","title":"\u76f4\u94feM3U8\u64ad\u653e"}"') do echo %%a %%b:%%c %%d
  3. pause
复制代码

TOP

回复 3# newswan

大佬,你这个确实可以,我需要在CMD运行的有吗!感谢大佬

TOP

回复 2# cmd1152
我知道解析出来是这个,我是说我发起GET请求,返回的是JSON数据我要解析,取对应的值
比如发起这个请求,
https://json.m3u8.tv:7788/json.php?url=https://v.qq.com/x/cover/mzc00200lxzhhqz/d0040q5zhb7.html
返回
{"code":200,"url":"https:\/\/cdn.oss-cn-hangzhou.myqcloud.com.xuetuiguang.cn\/m3u8video\/shfb10.m3u8","type":"hls","player":"M3U8.TV","msg":"\u6570\u636e\u6b63\u5e38","title":"\u76f4\u94feM3U8\u64ad\u653e"}
我需要取,code、url、type的值,再不安装第三方插件的情况下,怎么取的,

TOP

powershell
  1. $file =  "1.txt"
  2. (get-content -path $file | ConvertFrom-Json ).url
复制代码

TOP

  1. URL=https:\/\/subtitle.apdcdn.tc.qq.com\/vipzj.video.tc.qq.com\/gzc_1000102_0b53fmadmaaa6uakyiywrzq4ak6dgytqamsa.f2.mp4?vkey=F826AD23AB39A16CA31C7BF02771C96D855A8BF471723D39DE1686CF21ABC04DC9EEC07EFF9DEED81B5FC657BEC3A4F2267C4F4E8CCBED53EA49D5A78BA38951DFD933B5A95B58698C188E8E604DE17A1B83CBB4521CE89E2A30D32E1FA3340C53641E2323CCD0968FBD5A1328C7C58F03799887BE48DE77&from=WWW.M3U8.TV
复制代码
  1. code=200
复制代码
  1. type=M3U8TV
复制代码
  1. msg=www.m3u8.tv\u65e0\u5e7f\u544a\u89e3\u6790!
复制代码
  1. title=\u817e\u8baf\u89c6\u9891
复制代码
梦依旧在,只是,心有余而力渐有不足
年年岁岁花相似,岁岁年年人不同

TOP

返回列表