首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在excel vba中解析不一致的json响应长度

在excel vba中解析不一致的json响应长度
EN

Stack Overflow用户
提问于 2016-04-23 14:56:22
回答 1查看 525关注 0票数 0

在excel VBA中使用VBA v2.0.1

下面是我从API查询获得的JSON响应

代码语言:javascript
运行
复制
{
  "currency": {
    "code": "USD",
    "name": "US Dollar",
    "prefix": "$",
    "postfix": null
  },
  "products": [
    {
      "product_id": xxxxx,
      "model_code": "xxxxx",
      "quantity": 1,
      "price": "45.60",
      "total": "45.60",
      "retail_price": "63.84"
    }
  ],
  "shipping": [
    {
      "name": "UPS",
      "price": 43.83,
      "delivery": "3 -10 Days delivery"
    },
    {
      "name": "DHL",
      "price": 20.29,
      "delivery": "2-6 days"
    },
    {
      "name": "FedEx",
      "price": 31.46,
      "delivery": "2-6 days"
    },
    {
      "name": "EMS",
      "price": 25.74,
      "delivery": "7 - 25 Days delivery"
    },
    {
      "name": "Air Mail",
      "price": 11.85,
      "delivery": "10 - 25 Days delivery"
    }
  ]
}

下面是我的代码的一部分,用于解析来自"Air“元素的价格。

代码语言:javascript
运行
复制
result = objHTTP.responseText
Dim Json As Object
Dim resultAirmailprice As String
Set Json = JsonConverter.ParseJson(result)
resultAirmailprice = Json("shipping")(5)("price")
Cells(2, 2).Value = resultAirmailprice

当"Air“元素在”传送“元素的(5)中时,代码运行良好。问题是有时没有"UPS“和”空邮“元素,所以我得到了一个错误。

如何编写代码解析“空邮”价格,如果不存在,解析从"EMS“价格(或最便宜的价格)?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-23 15:32:19

查看Json解析器代码,它返回一个Dictionary对象,该对象包含其他Dictionary对象(子键),对于数组,它返回Collection对象。在Json中,我看到“传送”是一个数组,因此解析器返回一个Collection对象。

因此,您可以使用所有的集合成员和方法来操作和访问它。特别是,您可以使用Json("shipping").Count来检查船运集合有多少个元素。或者可以使用For each x in Json("shipping")迭代集合。

要检查您是否有字典或集合,可以使用TypeName函数或TypeOf..Is运算符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36812365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档