2015-10-14 157 views
1

我创建了一个包含对象的数组,其中一些属性也是对象。我已成功将其转换为JSON,并需要将其转换回对象数组,或者以某种方式从JSON对象的正确索引中提取正确的数据。将JSON解析为对象数组

更新

这是我所得到的样品,当我通过JSON.parse运行:

[{"Result":"Fail","Method":"T97E-v1","Beam1":{"BeamAge":"1","WidthUpper":1,"WidthCenter":1,"WidthLower":1,"WidthAverage":1,"DepthRight":1,"DepthCenter":1,"DepthLeft":1,"DepthAverage":1,"MaxLoad":1,"FS":18,"PSI":"18.00000","BreakOutside":"No"},"Beam2":{"BeamAge":"","WidthUpper":null,"WidthCenter":null,"WidthLower":null,"WidthAverage":null,"DepthRight":null,"DepthCenter":null,"DepthLeft":null,"DepthAverage":null,"MaxLoad":null,"FS":null,"PSI":"NaN"},"WaitForCuring":"No","AverageOfBeams":"NaN"}] 

更新2

这里是周围的代码我在做:

try { 
    localStorage["flexuralStrengthSamples"] = JSON.stringify(JSON.stringify(t97Samples)); 
    var parsedObject = JSON.parse(localStorage["flexuralStrengthSamples"]); 

    console.log(parsedObject);      
    console.log(parsedObject[0].Beam1.MaxLoad);    
} catch (err) { 
    alert(err.message); 
} 
+0

好吧,但对于一些数据例如:将其存储在localStorage的

try { localStorage["flexuralStrengthSamples"] = (JSON.stringify(t97Samples)); //Stringify only once, since localstorage values needs to be string var parsedObject = JSON.parse(localStorage["flexuralStrengthSamples"]); // should give the original object. console.log(parsedObject[0].Beam1.MaxLoad); // Since parsedObject is still string, this was failing. Now should work fine } catch (err) { alert(err.message); } 

看到这里的工作小提琴之前,你stringyfying两次?或者你可能已经试过一些代码了?堆栈不是要求代码的地方,而是提出具体问题。 – MorKadosh

+0

也许如果你告诉你正在使用的语言,你可以帮助我们来帮助你。如果您使用的是JavaScript,则问题不存在,因为JSON是JavaScript对象的字符串序列化。所以用JSON.parse你应该没问题。 –

+0

@PanamaJack我什么都没做,但破败的代码。我更新以显示解析JSON时得到的结果。 –

回答

1

您可以使用JSON.parse()解析JSON。

更新
这里是JSON.parse()您的数据的样本。

[{"Result":"Fail","Method":"T97E-v1","Beam1":{"BeamAge":"1","WidthUpper":1,"WidthCenter":1,"WidthLower":1,"WidthAverage":1,"DepthRight":1,"DepthCenter":1,"DepthLeft":1,"DepthAverage":1,"MaxLoad":1,"FS":18,"PSI":"18.00000","BreakOutside":"No"}}]

为了得到你的数据,你需要使用支架的符号,用于数组和点符号的对象。因此,假设data等于该JSON数组,那么您可以执行data[0].Result,即"Fail"data[0].Beam1.MaxLoad,即1

+0

我已经这样做了。 –

+0

让我知道这个更新是否有帮助。 –

+0

我试过了。它总是给我错误“无法读取未定义的属性MaxLoad”。 –