2017-06-16 145 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);