【问题标题】:Parse json with javascript用 javascript 解析 json
【发布时间】:2015-06-23 17:04:07
【问题描述】:

我有这个 json 文件,我想解析并获取 subcat 的值作为 javascript 中的数组 test1。是否有捷径可寻?我已经使用 AngularJS $http 来获取 json。

对于输入:

[
   {
    "category":"test1",
    "ID":"1",
      "subcat":[
        {
         "completed":"4",
         "uncompleted":"5"
        }
     ]
   },{
    "category":"test2",
    "ID":"2"
    "subcat":[
        {
         "completed":"1",
         "uncompleted":"5"
        }
   }

]

预期结果是[4,5]

【问题讨论】:

标签: javascript json angularjs


【解决方案1】:
Corrected Array 


 [
       {
         "category":"test1",
          "subcat":[
                    {
                      "completed":"4",
                      "uncompleted":"5"
                     }
                   ]
       },
       {
          "category":"test2",
          "subcat":[
                    {
                      "completed":"1",
                      "uncompleted":"5"
                    }
                   ]
         }
    ]
var JsonArray=[
                {
                  "category":"test1",
                  "subcat":[{"completed":"4","uncompleted":"5"}]}, 
                {
                  "category":"test2",
                  "subcat":[{"completed":"1","uncompleted":"5"}]
                }
              ];
for(var i=0;i<JsonArray.length;i++)
      {
          if(JsonArray[i].category=="test1")
            var Res=JsonArray[i].subcat;
      }

“Res”将包含您想要的结果; 如果您希望数组为 [4,5] 那么

var finalRes=[];
finalRes.push(Res[0].completed);
finalRes.push(Res[0].uncompleted);

【讨论】:

    【解决方案2】:

    试试这个...

         <script type="text/javascript">
          var newarray=new Array();
    var test='[{"category":"test1","ID":"1","subcat":[{"completed":"4","uncompleted":"5"}]},{"category":"test2","ID":"2","subcat":[{"completed":"1","uncompleted":"5"}]}]';
    
    var tags = JSON.parse(test);
    
    for(i=0;i<tags.length;i++)
    {
    
    if(tags[i]['category']=='test1')
    {
    var subcat=tags[i]['subcat'];
    for(j=0;j<subcat.length;j++)
    {
    newarray.push(subcat[j]['completed']);
    newarray.push(subcat[j]['uncompleted']);
    }
    
    }
    }
    console.log(newarray);
          </script>
    

    输出:["4", "5"]

    演示:https://jsfiddle.net/t4yfb923/

    【讨论】:

    • 我发布了我的答案,请检查并告诉我
    【解决方案3】:

    您可以使用 lodash 和方法 find : https://lodash.com/docs#find

    // Stock your json in a variable
    var json = [
       {
        "category":"test1",
        "ID":"1",
          "subcat":[
            {
             "completed":"4",
             "uncompleted":"5"
            }
         ]
       },{
        "category":"test2",
        "ID":"2"
        "subcat":[
            {
             "completed":"1",
             "uncompleted":"5"
            }
       }
    
    ]
    
    //find your object with lodash
    var result = _.find(json, {"ID": "1"});
    
    //then, get subcat value
    console.log(result.subcat) 
    

    【讨论】:

      猜你喜欢
      • 2011-10-09
      • 2014-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      相关资源
      最近更新 更多