首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VBA >

在VBA里面怎么读取json字符串

2012-12-28 
在VBA里面如何读取json字符串?想实现一个操作,在VBA里面读取现成的json字符串,然后把其中每一项的值插入到

在VBA里面如何读取json字符串?
想实现一个操作,在VBA里面读取现成的json字符串,
然后把其中每一项的值插入到EXCEL表中

像下面这样调用JS虽然也能实现,但是存在两个问题
1)因为这个json字符串里面的值是不固定的,
   所以像下面那种直接引用KEY的名字的做法,有时会出错误。
   想加一个对这个KEY是否存在的判断。

2)像下面那样引用的话,有的时候VBA会自动把KEY的打头字母变成大写
   例如把data变成Data,这样就跟KEY名不一致了,又会产生错误

请高手指教

    Dim cnsJSONString As String
    cnsJSONString = txtJson.Text
    Dim sc      As Object
    Dim strFunc As String
    Dim objJSON As Object
    
    Set sc = CreateObject("ScriptControl")
    sc.Language = "JScript"
    
    strFunc = "function jsonParse(s) { return eval('(' + s + ')'); }"

    sc.AddCode strFunc

    Set objJSON = sc.CodeObject.jsonParse(cnsJSONString)
    
    MsgBox objJSON.familyname
    
    Set objJSON = Nothing
    Set sc = Nothing
[最优解释]
不懂Json,帮顶
[其他解释]
1)因为这个json字符串里面的值是不固定的,
  所以像下面那种直接引用KEY的名字的做法,有时会出错误。
  想加一个对这个KEY是否存在的判断。
--思路是嗲用一个js函数,在这个函数里面判断,大致代码如下:
jscode = "var obj;function _Callback(o){obj=o;return 1;};function fcal(s){ return eval(s);};function getval(name){t=eval('typeof obj.'+name );if(t!='undefined'){ return eval('obj.'+name)};return ""};"
Set js = CreateObject("ScriptControl")
js.Language = "JavaScript"
js.AddCode jscode
Dim i As Integer
i = js.Run("fcal", "_Callback({result:1,name:""tom"",age:20})")

MsgBox js.Run("getval", "result")
Rem  不存在的字段只会返回空串,不会报错
MsgBox js.Run("getval", "not_result")


2)像下面那样引用的话,有的时候VBA会自动把KEY的打头字母变成大写
  例如把data变成Data,这样就跟KEY名不一致了,又会产生错误

-- 我测试的结果是:vba自动给你改成大学的是关键字,例如name val等,你自己的json最好用个性化的名字,例如strname, iage等。

热点排行