如何过滤json对象数据?

时间:2014-10-13 10:27:14

标签: javascript jquery

输入Json对象:

{"data":[
    {"itemID":100,"Testcase1":"aaa","status":"Active"},
    {"itemID":100,"Testcase1":"bbb","status":"No"},
    {"itemID":100,"Testcase1":"ccc","status":"Active"},
    {"itemID":101,"Testcase1":"zzz","status":"Active"}
]}

Json对象的预期输出:

[{
    "itemID":"100",
    "Testcase1":"aaa", 
    "Testcase1":"bbb", 
    "Testcase1":"ccc", 
    "status":"Active",
    "status":"No",
    "status":"Active"
},
{
    "itemID":"101",
    "Testcase1":"zzz",
    "status":"Active"
}]

有人帮帮我吗?

3 个答案:

答案 0 :(得分:0)

假设你的" JSON对象"是一个字符串,您可以在其上调用JSON.parse()

var data = '{"data":[{ ... }]}';

var parsed = JSON.parse(data);

这将为您提供以下结构的数据:

Example


您的预期输出不是有效对象。对象键必须是唯一的。对象不能有三个Testcase1键或三个status键。

答案 1 :(得分:0)

您只需从数据对象中提取对象

好的,一个纯粹的JS解决方案:

var obj = {"data":[{"itemID":100,"Testcase1":"aaa","status":"Active"},

{"itemID":100,"Testcase1":"bbb","status":"No"},{"itemID":100,"Testcase1":"ccc","status":"Active"},

{"itemID":101,"Testcase1":"zzz","status":"Active"}]};

var newArray = [];

for( var i = 0; i < obj['data'].length; i++) {
   newArray.push(obj['data'][i]);
}

现场演示:http://jsfiddle.net/seLwmbyp/1/(查看结果的控制台)&gt; [Object, Object, Object, Object]

答案 2 :(得分:0)

可能对你有帮助。这不是正确的方法。因为对象中不允许使用重复键。无论你的要求如何。我已经创建了一个所需格式的字符串。

请检查FIDDLE

var dataVal={"data":[
     {"itemID":100,"Testcase1":"aaa","status":"Active"},
     {"itemID":100,"Testcase1":"bbb","status":"No"},
     {"itemID":100,"Testcase1":"ccc","status":"Active"},
     {"itemID":101,"Testcase1":"zzz","status":"Active"}
]};

var arrayVal = dataVal.data;
var DistinctID=[];
var resultStr="";
for (var elements in arrayVal){

     if($.inArray(arrayVal[elements].itemID, DistinctID) == -1){
      DistinctID.push(arrayVal[elements].itemID)
     }
}

for (var items in DistinctID){
    resultStr +='{"itemID":"'+DistinctID[items]+'",';
    for (var elements in arrayVal){
        if(arrayVal[elements].itemID==DistinctID[items]){
            resultStr +='"Testcase1":"'+arrayVal[elements].Testcase1+'",';
            resultStr +='"status":"'+arrayVal[elements].status+'",';
        }
    }

resultStr = resultStr.substring(0, resultStr.length - 1);

    resultStr= resultStr+'},';

}
resultStr = resultStr.substring(0, resultStr.length - 1);
resultStr='['+resultStr+']';
alert((resultStr));