2017-02-04 1 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을 기대할 수 있습니다 : I 제안

"points": { 
    ... 
} 

당신이 왜에서 []을 받고되지 않습니다 조사하여 출처.