【发布时间】:2015-07-28 23:45:59
【问题描述】:
我必须与 JSON 返回作斗争(我从 Amazon Marketplace API 的 XML 响应中得到)。它包含数组、子数组等。目前我只需要获取 2 个值(AmazonOrderId 和 OrderItem 对象),但我找不到直接解决它们的方法。我仍然尝试了几个小时。递归的东西让我有点害怕。
那里有很多工具,也可以用于美化或编辑 JSON。那么是否还有一种解决方案可以递归地显示所有属性链接?到目前为止,我还没有找到类似的东西。
更新:使用 squint 回答的代码,我构建了一个快速而肮脏的工具,可以满足我的需求。这里是:http://output.jsbin.com/gunixo
喜欢:
myJSON.ListOrderItemsResponse.ListOrderItemsResult[0].OrderItems[0].OrderItem[0].QuantityOrdered
myJSON.ListOrderItemsResponse.ListOrderItemsResult[0].OrderItems[0].OrderItem[0].Title
...
在这种情况下,这确实可以节省时间。
{
"ListOrderItemsResponse": {
"$": {
"xmlns": "https://mws.amazonservices.com/Orders/2013-09-01"
},
"ListOrderItemsResult": [{
"OrderItems": [{
"OrderItem": [{
"QuantityOrdered": ["1"],
"Title": ["My Product Title"],
"ShippingTax": [{
"CurrencyCode": ["EUR"],
"Amount": ["0.00"]
}],
"PromotionDiscount": [{
"CurrencyCode": ["EUR"],
"Amount": ["0.00"]
}],
"ConditionId": ["New"],
"ASIN": ["BXXXI5W6M8"],
"SellerSKU": ["KNDR-BTTWSCH-BGSBNNY"],
"OrderItemId": ["67050234000659"],
"GiftWrapTax": [{
"CurrencyCode": ["EUR"],
"Amount": ["0.00"]
}],
"QuantityShipped": ["1"],
"ShippingPrice": [{
"CurrencyCode": ["EUR"],
"Amount": ["4.90"]
}],
"GiftWrapPrice": [{
"CurrencyCode": ["EUR"],
"Amount": ["0.00"]
}],
"ConditionSubtypeId": ["New"],
"ItemPrice": [{
"CurrencyCode": ["EUR"],
"Amount": ["15.77"]
}],
"ItemTax": [{
"CurrencyCode": ["EUR"],
"Amount": ["0.00"]
}],
"ShippingDiscount": [{
"CurrencyCode": ["EUR"],
"Amount": ["0.00"]
}]
}]
}],
"AmazonOrderId": ["304-6107803-0000000"]
}],
"ResponseMetadata": [{
"RequestId": ["dd64dd40-d939-4ea1-875d-xxxxxxxxxxxx"]
}]
}
}
【问题讨论】:
-
如果是 XML 响应,为什么要将其转换为 JSON?为什么不寻找一种工具来遍历原始 XML 呢? XML 和 JSON 的数据类型和结构确实不能很好地相互映射,因此通过转换,您只会使底层结构的工作变得更加困难。
-
另外,我不确定你在纠结什么;您提供的两个示例行看起来可以很好地处理您提供的示例数据。实际上不需要递归,只需对结构进行大量嵌套访问即可。
-
感谢您的评论。我使用 MWS-JS-2014 从亚马逊连接和检索数据。这(仅)为我提供了一个 JSON 对象。
-
是的,我很幸运,这两个确实有效。但是要找到正确的属性链接是很麻烦的。这些示例是其中的 2 个。获得较低属性的链接更难,因为我失去了概述。也因为有些属性有对象,有些有数组,有些只有值……昨天我花了几个小时没有找到正确的链接。我也没有找到向我显示此类属性链接的 Web 服务。但在这种情况下,这样的事情真的会有所帮助。
标签: javascript json node.js object amazon-mws