javascript使用动态变量解析嵌套的json

时间:2016-03-18 21:17:19

标签: javascript json parsing hash nested

我试图解析api调用返回的一些嵌套json。以下是返回内容的简化版本。

{
  "Includes":{
    "Products":{
      "P123456":{
        "Brand":{},
        "Description":"ipsem lorem",
        "Statistics":
          [
           "Author":"John Smith",
           "IsFeatured":false,
           "Total": 3
          ]
       }
     }
   }
 }

我已经尝试了几种不同的语法来获取我需要的产品product_code =" P123456"

data.Includes.Products.product_code.Statistics
data.Includes.Products[product_code].Statistics

我也尝试过使用' get'和' eval'无济于事。错误响应始终相同

application.js:1639 Uncaught TypeError: Cannot read property 'Statistics' of undefined

我知道产品代码是正确的,因为我有控制台记录它。我也成功安装了console.logged

data.Includes.Products["P123456"].Statistics

如何访问嵌套在产品代码下的数据," P123456" ?该项目使用zepto而不是jQuery。

3 个答案:

答案 0 :(得分:1)

使用有效的数据结构,您可以通过

访问它
object.Includes.Products.P123456

object.Includes.Products[product_code]

var object = {
        "Includes": {
            "Products": {
                "P123456": {
                    "Brand": {},
                    "Description": "ipsem lorem",
                    "Statistics": { // its an object, not an array
                        "Author": "John Smith",
                        "IsFeatured": false,
                        "Total": 3
                    }
                }
            }
        }
    },
    product_code = 'P123456';

document.write('<pre>' + JSON.stringify(object.Includes.Products.P123456, 0, 4) + '</pre>');
document.write('<pre>' + JSON.stringify(object.Includes.Products[product_code], 0, 4) + '</pre>');

答案 1 :(得分:0)

你有没有试过这个? data.Includes.Products.P123456.Statistics?它看起来像属性而不是索引字符串。

答案 2 :(得分:0)

Object.keys(data.Includes.Products)将返回产品下的一系列键。

如果你想要第一个Object.keys(data.Includes.Products)[0]

可以检索统计数据

var key = Object.keys(data.Includes.Products);
var statistics = data.Includes.Products[key].Statistics;

纯JavaScript ......没有库。

PS。你的JSON格式不正确。那&#34;统计&#34;阵列会引起眼泪。