绿色风's Blog
专注AutoIT(Au3)
  • 首页
  • 流●年
  • 笔●记
    • 学习随记
    • 源码示例
  • 脚●本
    • UDF(收集)
    • 工作室UDF
    • 工具●教程
    • 教程之GDI
  • 作●品
  • 下●载
  • 情怀ExcelTip
1月182017

AU3之简单的JSON读取解析

作者:绿色风   发布:2017-1-18 13:09 Wednesday   分类:学习随记   阅读:10480次   评论:2条  

原出处在ACN论坛 by :komaau3

函数很简单,目的仅为处理post返回的json字符,此时用这个函数感觉要比正则方便一点了把


看下几个示例先, 代码十分精简哈

;先来一个简单的json数据格式
Local $sJson = '{"Name":"aopo","Gender":"BOY","Age":"22"}'
Local $sRead = _JsonRead($sJson, 'Gender')
MsgBox(0,0,$sRead)

;成员包括数组,解析方法如下
Local $sJson = '{"Name":"xiaoqiang","Gender":"BOY","Age":"22","Birthday":["1990","06","06"]}'
Local $sRead = _JsonRead($sJson, 'Birthday[2]');日
MsgBox(0,0,$sRead)

;成员的数组里包含一个或多个标准json数据
Local $sJson = '{"Name":"xiaoqiang","Gender":"BOY","Age":"22","Birthday":[{"Year":"1990","Month":"06","Day":"06"}]}'
Local $sRead = _JsonRead($sJson, 'Birthday[0].Month');月
MsgBox(0,0,$sRead)

;还是来点实战把,类似下面的字符相信大家分析网页时常遇到把?
;\u6807\u51C6json\u6570\u636E\u89E3\u6790\uFF0C\u4F60\u51C6\u5907\u597D\u4E86\u5417\uFF1F 
;下面是抓取WebQQ接收消息的数据包,也是标准的json格式,下面我们尝试用函数来解析下:
Local $sJson = '{"retcode":0,"result":[{"poll_type":"message","value":{"msg_id":4989,"from_uin":1329660231,"to_uin":1393052988,"msg_id2":375774,"msg_type":9,"reply_ip":176882144,"time":1335604922,"content":[["font",{"size":12,"color":"808040","style":[0,0,0],"name":"\u5B8B\u4F53"}],"\u6807\u51C6json\u6570\u636E\u89E3\u6790\uFF0C\u4F60\u51C6\u5907\u597D\u4E86\u5417\uFF1F "]}}]}'
Local $sRead = _JsonRead($sJson, 'result[0].value.content[1]');取出被编码的中文的源字符串
MsgBox(0,0,$sRead)

Func _JsonRead($sJson = "", $sMember = '')
        Local $sResult, $sCode = ""
        $sJson = StringRegExpReplace ($sJson, '[\r\n]+', '');去除换行
        $sCode &= 'function json2str()' & @CRLF
        $sCode &= '{' & @CRLF
        $sCode &= "var jsontext = '" & $sJson & "';"  & @CRLF
        $sCode &= 'var obj = eval("("+jsontext+")");' & @CRLF ; json2object
        $sCode &= 'var member = obj.' & $sMember & @CRLF ;取出信息
        $sCode &= 'return member' & @CRLF
        $sCode &= '}' & @CRLF
        ;ConsoleWrite($sCode)
        Local $oScript = ObjCreate("MSScriptControl.ScriptControl.1")
        $oScript.language = 'JavaScript'
        $oScript.AddCode($sCode)
        $sResult = $oScript.Run('json2str')
        $oScript = 0
        Return $sResult
EndFunc



另附JSMN:_Json(2019.01.17).zip

;新加 $len   取对象长度 

Func _JsonRead($sJson = "", $sMember = '', $len = 0)
    Local $sResult, $sCode = ""
    $sJson = StringRegExpReplace($sJson, '[\r\n]+', '');去除换行
    $sCode &= 'function json2str()' & @CRLF
    $sCode &= '{' & @CRLF
    $sCode &= "var jsontext = '" & $sJson & "';" & @CRLF
    $sCode &= 'var obj = eval("("+jsontext+")");' & @CRLF ; json2object
    If $len = 0 Then
        $sCode &= 'var member = obj.' & $sMember & @CRLF ;取出信息
    Else
        $sCode &= 'var member = obj.' & $sMember & '.length' & @CRLF ;取出对象长度
    EndIf
    $sCode &= 'return member' & @CRLF
    $sCode &= '}' & @CRLF
    ;ConsoleWrite($sCode)
    Local $oScript = ObjCreate("MSScriptControl.ScriptControl.1")
    $oScript.language = 'JavaScript'
    $oScript.AddCode($sCode)
    $sResult = $oScript.Run('json2str')
    $oScript = 0
    Return $sResult
EndFunc   ;==>;_JsonRead




本文固定链接: http://www.jianyiit.com/post-253.html

blogger
该日志由 绿色风 于2017-1-18 13:09 Wednesday发表在 学习随记 分类下。
版权所有:《绿色风's Blog》 → 《AU3之简单的JSON读取解析》;
除特别标注,本博客很多文章均为原创. 互联分享,尊重版权,转载请以链接形式标明本文地址;
本文标签:

扫描二维码,在手机上阅读
上一篇::AutoIT V3的其它语言论坛的导航【AU3】
下一篇:屏蔽键盘MOUSE超级UDF

热门文章

相关文章

  • 获取图片尺寸
  • CSS样式_做个笔记
  • AU3强制本机内嵌IE版本为本机最高版本IE
  • 精典小巧的Url转码
  • Dictionary对象的操作
评论列表 ↓
自古二楼出人才。 h      2021-08-13 20:50 @回复
风哥牛逼
呦,果断人中龙凤! null      2017-11-03 16:12 @回复
到35line提示错误。感觉没有编成基础想要自己做一个实现真难。
取消回复

发表评论

亲,头像对么?

52 + 13 =

提交中,请稍候……


木有头像就木JJ啦!还木有头像吗?点这里申请属于你的个性Gravatar头像吧!


    站点统计
    • 运行时间: 20254 天
    • 日志总数: 365 篇
    • 评论数量: 7238 条
    • 微语数量: 6 条
    • 附件总量: 388 件
  • 逝出的青春

  • 打赏"绿色风"



      扫码关注本站公众号 可搜本站内容

  • Autoit V3 脚本交流群

      常驻群1:905774875
      常驻群2:40672266


  • 链接

    • AU3中文论坛
    • Excel资料库
    • 完美者博客
    • 顺网小哥'S Blog
    • 猛牛哥的博客
    • 网吧系统下载
  • 分类

    • 流●年(66)
    • 笔●记(0)
    • 脚●本(0)
    • 作品(21)
    • 学习随记(51)
    • 源码示例(68)
    • UDF(收集)(26)
    • 工作室UDF(30)
    • 工具●教程(62)
    • 教程之GDI(24)
Copyright © 2013 绿色风's Blog. Powered by emlog. Theme by 射雕天龙. 鄂ICP备2021011689号-1 鄂公网安备42102302000078号 sitemap