为什么不是as3在JSON中处理我的数组?

问题描述:

在这里,我有这个json文件。为什么不是as3在JSON中处理我的数组?

{ 
    "BnUs5hQZkJWLU9jGlpx9Ifq5ocf2" : { 
    "bio" : "Your bio!\r", 
    "birthday" : "Date of Birth?", 
    "location" : "Location?", 
    "markerBorder" : 1.5542403222038021E7, 
    "markerColor" : 8222122.31461079, 
    "name" : "NamesName?", 
    "profilePrivacy" : 2, 
    "sex" : "Gender?", 
    "privacy" : 2, 
    "points" : { 
     "-Kc7lfJk3XbPlNyk-wIR" : { 
     "address" : "dsfsdfasfsfd", 
     "description" : "status/desription", 
     "latitude" : 35.2, 
     "longitude" : -80.7, 
     "mediaTargets" : "none", 
     "pub" : false, 
     "timestamp" : 1486205926658 
     }, 
     "aaa" : "aaa" 
    } 
    } 
} 

,当我用火力charactors的那些随机字符串是自动进行的。

在这种情况下,可能会有更多的“积分”,我将不得不考虑。所以当我参考点时,我应该和一个数组交谈,因为它包含"-Kc7lfJk3XbPlNyk-wIR"(一个数组)和"aaa"(一个字符串)。

那么,为什么我在试图将parsedObject.points转换为数组时遇到类型错误?

var parsedObject:Object = JSON.parse(e.target.data); 
var multiArray:Array = parsedObject.points; 

TypeError: Error #1034: Type Coercion failed: cannot convert [email protected] to Array. 

基本上,我试图做的是什么this guy是反其道而行之。

编辑:the notes,它只能处理字符串,数字和布尔值看..

我设法解决它通过添加对象“父”节点是复制了相同的值整个节点的名称,以便我可以在脚本中引用它。有没有更好的方法来解决这个问题?似乎相当多余。

var parsedObject:Object = JSON.parse(e.target.data); 

    var myPoints:Object = parsedObject["points"]; 
    //Get all trek names 
    for each (var key:Object in myPoints) 
    { 
     trace("Key = " + key.parent); 
     trace(parsedObject.treks[key.parent].latitude) //Returns -80.7 
    } 

因为Array是Object的子类。

var A:Array = new Array(); 
var B:Object = new Object(); 

trace(A is Array); // true 
trace(A is Object); // true 
trace(B is Array); // false 
trace(B is Object); // true 

B = new Array(); // nothing wrong here 
A = new Object(); // throws exception 

所以,你可能想告诉你,你获得的阵列形式从parsedObject.points对象进行什么样的数据。

或者,这就是你如何从JSON字符串获得实际的数组:

{ 
    "list": [1,2,3,4,5,6] 
} 

看起来像它的正确被JSON.parse解析给我。

JSON中的数组使用方括号,大括号被解释为对象。

你只从JSON.parse期待一个Array如果你有

"points": [ 
    ... 
] 

,而这是一个Object

"points": { 
    ... 
} 

我建议你看看你为什么不从得到[]您资源。