【问题标题】:JavaScript Parsing Complex JSON [duplicate]JavaScript 解析复杂的 JSON [重复]
【发布时间】:2014-10-31 14:44:17
【问题描述】:

我有以下 JSON:

{  
   "_id":"9876567833",
   "result":{  
      "Mercedes":[  
         {  
            "category_name":"Car"
         },
         {  
            "category_name":"Fast"
         }
      ],
      "BMW":[  
         {  
            "category_name":"Car"
         }
      ]
   }

“Mercedes”或“BMW”之前我不知道(它可能会改变,这只是为了举例)。 我需要得到“汽车”、“快速”、“汽车”。

JSON 位于categories 所以我尝试了:

    var categoArray = [];
    for(var i =0; i < categories.length; i++){
        for (var idx in categories[i].result) {
               if (categories[i].result[idx].length > 0){
                   categoArray.push(categories[i].result[idx].category_name);
          }
         }
       }

但它不起作用。

[编辑] 不一样:Access / process (nested) objects, arrays or JSON

我的问题要复杂得多

感谢您的帮助!

【问题讨论】:

  • 你希望数组是什么样子的?
  • 我想在 categoArray 中有:Car", "Fast", "Car"
  • @chridam 你是对的,刚刚编辑,谢谢
  • 您正在测试categories[i].result[idx].length,我假设您正在测试,因为categories[i].result[idx] 是一个数组。那你为什么要访问categories[i].result[idx].category_name?数组没有这样的属性。
  • 问题是我想要“category_name”中的内容:比如“Car”、“Fast”、“Car”

标签: javascript json parsing


【解决方案1】:

你已经接近了,但你还需要 1 个循环:

var categoArray = [];
for (var i = 0; i < categories.length; i++) {
    for (var key in categories[i].result) {
        for (var j = 0; j < categories[i].result[key].length; j++) {
            categoArray.push(categories[i].result[key][j].category_name);
        }
    }
}

【讨论】:

  • 仍有错误 TypeError: Cannot read property 'category_name' of undefined
【解决方案2】:

categories[i].result[idx] 返回一个数组,而不是一个对象。因此,categories[i].result[idx].category_name 将是 undefined

【讨论】:

  • 是 :( TypeError: 无法读取未定义的属性“category_name”
猜你喜欢
  • 2012-04-10
  • 2017-01-09
  • 1970-01-01
  • 1970-01-01
  • 2013-01-06
  • 2015-06-02
  • 1970-01-01
  • 2013-08-23
相关资源
最近更新 更多