问题描述
我有这个json。而且,无论我尝试什么,我都无法从中获得任何价值? 我不知道我在想什么? 这是json字符串。
{
"groups": [{
"name": "Credit Card","types": ["mc","visa","amex"]
}],"paymentMethods": [{
"brands": ["mc","amex"],"details": [{
"key": "encryptedCardNumber","type": "cardToken"
},{
"key": "encryptedSecurityCode",{
"key": "encryptedExpiryMonth",{
"key": "encryptedExpiryYear",{
"key": "holderName","optional": true,"type": "text"
}],"name": "Card","type": "scheme"
},{
"name": "Få först. Betala sen med Klarna.","supportsRecurring": true,"type": "klarna"
},{
"name": "Trustly","type": "trustly"
},{
"name": "Swish","type": "swish"
},{
"name": "Paysafecard","type": "paysafecard"
},{
"name": "Dela upp med Klarna.","type": "klarna_account"
},{
"name": "Pay Now with Klarna.","type": "klarna_payNow"
}]
}
然后,我尝试获取一个单一值(“信用卡”),并遍历所有paymetsMethods.details.key值,然后遍历所有最后一个“名称”。
<!--#include file="aspJSON1.17.asp" -->
jsonstring = CStr(objXmlHttp.ResponseText)
'response.write "---"&jsonstring &"---"
Set oJSON = New aspJSON
oJSON.loadJSON(jsonstring)
groupsname=oJSON.data("groups").item("name")
response.write groupsname
For Each x In oJSON.data("paymentMethods").item("details")
paymentMethods=oJSON.data("paymentMethods").item("details").item("key")
response.write paymentMethods
NEXT
For Each x In oJSON.data("name")
thename=oJSON.data.item("name")
response.write thename
NEXT
我显然缺少什么,但是呢? 任何帮助真的很感激。谢谢。
解决方法
在解析JSON时,如果遇到一个集合(即一个数组),则必须遍历它,然后才能尝试在JSON结构中更深的位置检索值。
在这种情况下,要访问key
属性,必须遍历两个集合。
-
paymentMethods
-
details
所以这个For
循环;
For Each x In oJSON.data("paymentMethods").item("details")
paymentMethods=oJSON.data("paymentMethods").item("details").item("key")
response.write paymentMethods
NEXT
应该更像;
Dim paymentMethod,paymentMethodsItem,details,detailsItem
For Each paymentMethodsItem In oJSON.data("paymentMethods")
Set paymentMethod = oJSON.data("paymentMethods").item(paymentMethodsItem)
For Each detailsItem In paymentMethod.data("details")
Set details = paymentMethod.data("details").item(detailsItem)
Call Response.Write(details.item("key"))
Next
Next
#提供的代码未经测试