为什么不是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": {
...
}
我建议你看看你为什么不从得到[]
您资源。