以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]如何使用json返回的数组? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=39976) |
|
-- 作者:智友软件工作室 -- 发布时间:2013/9/5 20:06:00 -- [求助]如何使用json返回的数组?
我用这个: Dim key As String = e.Form.Controls("TextBox1").value
Dim secret As String = e.Form.Controls("TextBox2").value
Dim url As String = e.Form.Controls("TextBox3").value
Dim XMLH As Object
XMLH = CreateObject("Microsoft.XMLHTTP")
XMLH.open("GET", "https://apicn.faceplusplus.com/v2/detection/detect?url=" & url & "&api_secret=" & secret & "&api_key=" & key, True) \'获得实时信息
XMLH.send(Nothing)
Do While XMLH.readyState <> 4
Application.DoEvents
Loop
\'把数据json数据转化成对象
Dim json As String = XMLH.responseText
Dim ScriptControl As Object,data As Object,JscriptCode As String
JscriptCode = "function toObject(json) {eval(""var o=""+json);return o;}"
ScriptControl = CreateObject("MSScriptControl.ScriptControl")
With ScriptControl
.Language = "Javascript"
.Timeout = -1
.AddCode(JscriptCode)
data = .Run("toObject", json)
End With
MessageBox.Show(json)
e.Form.Controls("Label1").text = "img_height:" & data.img_height
e.Form.Controls("Label2").text = "img_width:" & data.img_width
e.Form.Controls("Label3").text = "img_id:" & data.img_id
e.Form.Controls("Label4").text = "session_id:" & data.session_id
e.Form.Controls("Label5").text = "url:" & data.url
已经读取了除face中的内容了。
请问如何读取这个face数组呢?
|
|
-- 作者:智友软件工作室 -- 发布时间:2013/9/5 20:07:00 -- 对于face数组困惑中....... |
|
-- 作者:有点甜 -- 发布时间:2013/9/5 20:46:00 -- 直接获取不行么? data.face(0).attribute.age.range
|
|
-- 作者:智友软件工作室 -- 发布时间:2013/9/5 21:15:00 -- data.face(0).attribute.age.range 这样直接引用会报错的,是不是要处理一下这个数组???
|
|
-- 作者:智友软件工作室 -- 发布时间:2013/9/5 21:44:00 --
|
|
-- 作者:智友软件工作室 -- 发布时间:2013/9/5 21:52:00 -- 谁帮我看看啊 |
|
-- 作者:有点甜 -- 发布时间:2013/9/5 22:11:00 -- 测试了很多下,查询了好些资料,发觉不能够,所以这样如下处理,自己判断下标去取值。 Dim s As String = "{\'face\':[{\'a\':\'a\'}, {\'b\':{\'bb\':\'bb\'}}], \'test\':\'test\'}" Dim json As String = s Dim ScriptControl As Object,data As Object,JscriptCode As String JscriptCode = "function toObject(json) {eval(""var o=""+json);return o;}" ScriptControl = CreateObject("MSScriptControl.ScriptControl") With ScriptControl .Language = "Javascript" .Timeout = -1 .AddCode(JscriptCode) data = .Run("toObject", json) End With Dim count As Integer = 0 For Each i As object In data.face If count = 1 Then msgbox(i.b.bb) End If count += 1 Next |
|
-- 作者:智友软件工作室 -- 发布时间:2013/9/5 22:22:00 -- e.Form.Controls("Label1").text = "img_height:" & data.img_height
e.Form.Controls("Label2").text = "img_width:" & data.img_width
e.Form.Controls("Label3").text = "img_id:" & data.img_id
e.Form.Controls("Label4").text = "session_id:" & data.session_id
e.Form.Controls("Label5").text = "url:" & data.url 请问上述的这个已经能读取出来的和你写的代码有冲突吗?还需要动吗?是不是您写的专门是针对face这个数组的呢?
|
|
-- 作者:有点甜 -- 发布时间:2013/9/5 22:35:00 -- 我只是做一个例子,楼主,你可以直接运行代码的。 |
|
-- 作者:有点甜 -- 发布时间:2013/9/5 22:36:00 -- 比如你要获取 data.face(0).attribute.age.range Dim count As Integer = 0 For Each o As object In data.face If count = 0 Then msgbox(o.attribute.age.range) End If count += 1 Next |