ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2792|回复: 7

[求助] 解析json,试了好多个方法还是提取不了,请高手指点一下

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-10-18 18:06 | 显示全部楼层 |阅读模式
本帖最后由 hai167 于 2018-10-18 18:11 编辑

解析json,试了好多个方法还是提取不了,请高手指点一下,例如我现在要取advice_result对应的值,没有真正理解json结构的解析,有劳高手点开我一下,非常感谢。

json字符串
{
    "return_code": "OK",
    "result_code": "SUCCESS",
    "result": {
        "return_code": "OK",
        "result_code": "SUCCESS",
        "result": {
            "rm_code": 0,
            "message": "pass",
            "body": {
                "report": "{\"title\":\"保理企业报告\",\"ent_name\":\"腾讯数码(深圳)有限公司\",\"ent_id\":\"914403007938536006\",\"time\":\"2018-10-18 17:02:08\",\"version\":[{\"autorun\":\"V1.0\",\"time\":\"2018-10-18 17:02:08\"}],\"strategy_1\":{\"block_title\":\"初审决策结果\",\"advice_result\":0,\"id\":\"cus_first_review_verify_6718\",\"children\":[{\"type\":\"ruleset\",\"id\":\"cus_first_review_verify_8538\",\"name\":\"行业禁入\",\"children\":[{\"type\":\"rule\",\"id\":164,\"name\":\"行业禁入\",\"autorun\":{\"risk_result\":\"0\"}}]},{\"type\":\"ruleset\",\"id\":\"cus_first_review_verify_0736\",\"name\":\"其他禁入\",\"children\":[{\"type\":\"rule\",\"id\":165,\"name\":\"成立未满1年\",\"autorun\":{\"risk_result\":\"0\"}},{\"type\":\"rule\",\"id\":166,\"name\":\"外资企业\",\"autorun\":{\"risk_result\":\"0\"}},{\"type\":\"rule\",\"id\":167,\"name\":\"近12个月大股东出现变更\",\"autorun\":{\"risk_result\":\"0\"}},{\"type\":\"rule\",\"id\":168,\"name\":\"近12个月法人代表出现变更\",\"autorun\":{\"risk_result\":\"0\"}}]}]},\"buyer_info\":{\"block_title\":\"买方信息\",\"data\":[]},\"memo\":{\"block_title\":\"备注\",\"text\":\"\"}}"
            }
        }
    }



网上方法1

    Set x = CreateObject("ScriptControl"): x.Language = "JScript"
    Set y = x.eval("eval(" & JSONString & ")")
    MsgBox y.Result.Result.body.report.strategy_1.advice_result       '报错
  

网上方法2  
    Set oDom = CreateObject("htmlfile")
    Set oWindow = oDom.parentWindow
    oWindow.execScript "var o=" & JSONString
    MsgBox oWindow.o.Result.Result.body.report.strategy_1.advice_result     '报错

以及怎么循环report里所有的值

json字符串.rar (657 Bytes, 下载次数: 11)

TA的精华主题

TA的得分主题

发表于 2018-10-18 19:19 | 显示全部楼层
要留意
有些得出的字串要自己diy的
可能要在最前或最後加入方括號 "[" "]"
因為這是大數組的形式,沒了這個會不能讀

TA的精华主题

TA的得分主题

发表于 2018-10-18 20:53 | 显示全部楼层
注意观察本地窗口对象的变化情况,这是我解析出的结果,运行正常
oWindow.execsCript "var js=" & sTemp '赋值给对象a
Set obj = oWindow.eval("js.result.result.body") 'ok

s = obj.report '得到body后面的JSON数据
Rem 此时查看obj,发现只一个reprot属性,值为一个json对象

oWindow.execsCript "var js2=" & s  'json对象js2

Set obj2 = oWindow.js2
Debug.Print oWindow.eval("js2.strategy_1.block_title") 'ok
Rem 输出 初审决策结果

Debug.Print oWindow.eval("js2.strategy_1.advice_result") 'ok
Rem 输出 0

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-19 01:22 | 显示全部楼层
zmj9151 发表于 2018-10-18 20:53
注意观察本地窗口对象的变化情况,这是我解析出的结果,运行正常
oWindow.execsCript "var js=" & sTemp ' ...

非常感谢,白天上班再试试。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-19 12:00 | 显示全部楼层
zmj9151 发表于 2018-10-18 20:53
注意观察本地窗口对象的变化情况,这是我解析出的结果,运行正常
oWindow.execsCript "var js=" & sTemp ' ...

试过没有问题,谢谢。

理解了后用另外一种方法也能提取到了
        Set JSON = CreateObject("MSScriptControl.ScriptControl")
        JSON.Language = "JScript"
        JSONPath = "result.result.body.report"
        JSONParse = JSON.eval("JSON=" & JsonResult & ";JSON." & JSONPath & ";")
        
        JSONPath = "strategy_1.advice_result"
        Get_First_Verify_Result = JSON.eval("JSON=" & JSONParse & ";JSON." & JSONPath & ";")

TA的精华主题

TA的得分主题

发表于 2018-10-19 16:34 | 显示全部楼层
hai167 发表于 2018-10-19 12:00
试过没有问题,谢谢。

理解了后用另外一种方法也能提取到了

提示语法错误

TA的精华主题

TA的得分主题

发表于 2018-10-19 16:35 | 显示全部楼层
zmj9151 发表于 2018-10-18 20:53
注意观察本地窗口对象的变化情况,这是我解析出的结果,运行正常
oWindow.execsCript "var js=" & sTemp ' ...

为什么要分步解析,能解释一下吗?

TA的精华主题

TA的得分主题

发表于 2018-10-19 21:11 来自手机 | 显示全部楼层
因为按正常的解析步骤出错了,你观察立即窗口,result属性返回的是一串字符串,具体为什么我也不清楚
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-27 12:03 , Processed in 0.038377 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表