在aspJSON中如何从JSON数组内获取指定属性值?
问题排查与修复步骤
1. 先修正测试JSON的格式错误
你当前的testdata不符合标准JSON规范,aspJSON解析非标准JSON会直接失败,需要做三处修改:
- 所有键名、字符串值必须用双引号包裹,不能用单引号
- 空值用JSON标准的
null,而非Python语法的None - VBScript字符串中的双引号需要用两个双引号转义
修正后的testdata示例:
testdata = _ "{""payments"":" & _ " [{""status"": ""succeeded"", " & _ " ""in_store_payment_type"": null, " & _ " ""refunds"": [], " & _ " ""created_at"": ""2021-10-20T17:23:41-0400"", " & _ " ""amount_paid_display"": ""53.00"", " & _ " ""initial_amount_paid_display"": ""53.00"", " & _ " ""currency"": ""usd"", " & _ " ""initial_amount_paid"": 5300, " & _ " ""pk"": 75552720, " & _ " ""type"": ""affiliate"", " & _ " ""amount_paid"": 5300" & _ " }]" & _ "}"
2. 修正JSON解析与属性访问语法
你使用的json.parse()和get(0)都不是aspJSON库的标准用法,该库的标准写法如下:
<%@ LANGUAGE="VBSCRIPT" %> <!--#include file="aspJSON.asp" --> <% ' 此处替换为你读取testdata的逻辑,testdata用上面修正后的格式 Set oJSON = New aspJSON oJSON.loadJSON(testdata) ' 先校验是否解析出错 If oJSON.ErrNumber <> 0 Then Response.Write "解析错误:" & oJSON.ErrDescription Response.End End If ' 读取目标属性,数组索引从0开始 Response.Write "Data->" & oJSON.data("payments")(0).data("status") %>
如果你使用的是新版aspJSON库,也可以用更简洁的点语法访问:
Response.Write "Data->" & oJSON.payments(0).status
3. 异常校验建议
如果修改后还是输出异常,可以先输出payments数组长度校验解析是否正常:
Response.Write "payments数组长度:" & oJSON.data("payments").count
如果输出为0说明JSON格式仍有错误,可逐行核对引号、逗号、括号等符号是否匹配。
内容的提问来源于stack exchange,提问作者GaryG
相关产品推荐
相关产品推荐

