2017-02-04 2 views
1

ここに私はこの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" 
    } 
    } 
} 

これらのランダムな文字列は、firebaseを使用すると自動的に作成されます。

このシナリオでは、より多くの「ポイント」が考慮されることがあります。だから私がポイントを参照するとき、配列には"-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 
    } 

答えて

2

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文字列から実際の配列を取得する方法である:それは正しく私にJSON.parseによって解析されているよう

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

が見えます。

JSONの配列は角かっこを使用し、中かっこはオブジェクトとして解釈されます。

これはObjectであるのに対し、あなたは

"points": [ 
    ... 
] 

を持っていた場合にのみ、JSON.parseからArrayを期待:

"points": { 
    ... 
} 

私はあなたがあなたから[]を取得されていません理由に見てくださいソース。

関連する問題