2017-06-16 163 views
0

我想把这个JSON文件变成数组:如何从多个JSON对象中获取数组?

{“Elements”:[{“LowerTolerance”:1.4,“Name”:“abc”,“ReferenceValue”:1.5,UpperTolerance:1.6,有效 “:假的,” 价值 “:1.8},{” LowerTolerance “:20,” 姓名 “:” 高清”, “ReferenceValue”:21.5, “UpperTolerance”:23, “有效”:真正的 “价值”:22.8 },{ “LowerTolerance”:4.5, “名称”: “GHI”, “ReferenceValue”:5 “UpperTolerance”:5.5, “有效”:假, “值”:4}], “KAMERA”: “C1” }

这里是一个有序的树的形式JSON文件的图片:JSON file

我想得到这样lowertolerance阵列[],名[],referencevalue []等,所以当我打电话的元素阵列我得到它的价值。例如: 名[2] = GHI或referencevalue [0] = 1.5

我发现这一点:https://stackoverflow.com/questions/6857468/converting-a-js-object-to-an-array#=

现在我有,我不知道,当你有内部的对象做什么的问题像我这样的对象。

我尝试这样做:

var o = {"Elements": [{"LowerTolerance": 1.4, "Name": "abc", "ReferenceValue": 1.5, "UpperTolerance": 1.6}, {"LowerTolerance": 1.4, "Name": "abc", "ReferenceValue": 1.5, "UpperTolerance": 1.6}, {"LowerTolerance": 1.4, "Name": "abc", "ReferenceValue": 1.5, "UpperTolerance": 1.6}], "Kamera": "c1"}; 
 

 
var arr = $.map(o, function(el) { return el; }) 
 

 
document.getElementById("output").innerHTML = arr;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="output"> 
 
</div>

(需要的jQuery)

的输出中是:“[对象的对象],[对象的对象],[对象的对象] C1" 。 我需要做些什么来获得主对象内的对象?

如果你能帮助我,你会让我真的很开心!


这里是我的问题的一个简单的例子:

\t var myObj = [{1:1, 2:2, 3:3}, {4:4, 5:5, 6:6}]; 
 

 
\t var array = $.map(myObj, function(value, index) { 
 
\t \t return [value]; 
 
\t }); 
 
\t document.getElementById("output").innerHTML = array;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<p id="output"></p>

回答

0

您的JSON对象:

myJson = {"Elements":[{"LowerTolerance":1.4,"Name":"abc","ReferenceValue":1.5,"UpperTolerance":1.6,"Valid":false,"Value":1.8},{"LowerTolerance":20,"Name":"def","ReferenceValue":21.5,"UpperTolerance":23,"Valid":true,"Value":22.8},{"LowerTolerance":4.5,"Name":"ghi","ReferenceValue":5,"UpperTolerance":5.5,"Valid":false,"Value":4}],"Kamera":"c1"} 

创建每个阵列,例如:

0123现在

,遍历您的JSON和每个值推到数组:

for (var i=0; i<myJson.Elements.length; i++) { 
lowerToleranceArray.push(myJson.Elements[i].LowerTolerance); 
} 

现在,你有你的lowerTolerance阵列。对于其他数组也是一样的(推入同一个循环)。

+0

太谢谢你了!这工作完美。 – Joh

0

使用ES6for...of循环

var jsonObj = { 
 
\t "Elements": [{ 
 
\t \t "LowerTolerance": 1.4, 
 
\t \t "Name": "abc", 
 
\t \t "ReferenceValue": 1.5, 
 
\t \t "UpperTolerance": 1.6, 
 
\t \t "Valid": false, 
 
\t \t "Value": 1.8 
 
\t }, { 
 
\t \t "LowerTolerance": 20, 
 
\t \t "Name": "def", 
 
\t \t "ReferenceValue": 21.5, 
 
\t \t "UpperTolerance": 23, 
 
\t \t "Valid": true, 
 
\t \t "Value": 22.8 
 
\t }, { 
 
\t \t "LowerTolerance": 4.5, 
 
\t \t "Name": "ghi", 
 
\t \t "ReferenceValue": 5, 
 
\t \t "UpperTolerance": 5.5, 
 
\t \t "Valid": false, 
 
\t \t "Value": 4 
 
\t }], 
 
\t "Kamera": "c1" 
 
}; 
 

 
let lowertolerance = []; 
 
let name = []; 
 
let referencevalue = []; 
 
let uppertolerance = []; 
 
let valid = []; 
 
let value = []; 
 

 
for (let item of jsonObj.Elements) { 
 
    lowertolerance.push(item.LowerTolerance); 
 
    name.push(item.Name); 
 
    referencevalue.push(item.ReferenceValue); 
 
    uppertolerance.push(item.UpperTolerance); 
 
    valid.push(item.Valid); 
 
    value.push(item.Value); 
 
} 
 

 
console.log("lowertolerance :", lowertolerance); 
 
console.log("name :", name); 
 
console.log("referencevalue :", referencevalue); 
 
console.log("uppertolerance :", uppertolerance); 
 
console.log("valid :", valid); 
 
console.log("value :", value);