2014-01-21 1 views
2

클래스를 Map으로 변환하고 싶습니다. Serialization 패키지를 사용하고 있습니다. 이 예에서 그것은 간단 같습니다직렬화 패키지 사용 방법

var address = new Address(); 
address.street = 'N 34th'; 
address.city = 'Seattle'; 
var serialization = new Serialization() 
    ..addRuleFor(Address); 
Map output = serialization.write(address); 

내가 {'street' : 'N 34th', 'city' : 'Seattle'} 같은 출력을 볼 것으로 예상하지만 대신 단지 출력 뭔가

{"roots":[{"__Ref":true,"rule":3,"object":0}],"data":[[],[],[],[["Seattle","N 34th"]]],"rules":"{\"roots\":[{\"__Ref\":true,\"rule\":1,\"object\":0}],\"data\":[[],[[{\"__Ref\":true,\"rule\":4,\"object\":0},{\"__Ref\":true,\"rule\":3,\"object\":0},{\"__Ref\":true,\"rule\":5,\"object\":0},{\"__Ref\":true,\"rule\":6,\"object\":0}]],[[],[],[\"city\",\"street\"]],[[]],[[]],[[]],[[{\"__Ref\":true,\"rule\":2,\"object\":0},{\"__Ref\":true,\"rule\":2,\"object\":1},\"\",{\"__Ref\":true,\"rule\":2,\"object\":2},{\"__Ref\":true,\"rule\":7,\"object\":0}]],[\"Address\"]],\"rules\":null}"}

답변

3

사람이 읽을 수있는 출력을 만들지 않아야합니다. 아마 JSON 출력은 더는 찾아 무엇을 :

import dart:convert; 

{ 
var address = new Address(); 
    ..address.street = 'N 34th'; 
    ..address.city = 'Seattle'; 

var encoded = JSON.encode(address, mirrorJson); 
} 

Map mirrorJson(o) { 
    Map map = new Map(); 
    InstanceMirror im = reflect(o); 
    ClassMirror cm = im.type; 
    var decls = cm.declarations.values.where((dm) => dm is VariableMirror); 
    decls.forEach((dm) { 
    var key = MirrorSystem.getName(dm.simpleName); 
    var val = im.getField(dm.simpleName).reflectee; 
    map[key] = val; 
    }); 

    return map; 
} 
+0

1)이 예제는 개체를 json으로 변환합니다. json을 JSON.decode로 객체로 변환하는 형식이 있습니까? 2) 다트 : 거울을 사용하고 있습니다. dart2js로 JavaScript로 변환 할 때 사용할 수 있습니까? – Muka

1

I-안되 알고가 - - 그 - 것입니다 new Address()은보고있는 전체 원형 객체를 만듭니다. 즉, 그들은 그 중 일부를 피할 수있는 일을 할 수 있었지만 개체를 ​​그대로 복원하려는 경우 필요합니다.

for(obj in idx) alert(obj[idx]); 

당신은 데이터의 하중이 방법을 얻을 것을 볼 수 있습니다 :

은이 방법으로()에 명령을 사용하여 객체의 전체 내용을 참조하십시오. new Address()이 없다면 아마 그렇게 나쁘지 않을 것입니다.

0
직렬화

당신은 JsonObject 라이브러리에 대한 시도를 줄 수도 ... 여기에 당신을 도울 수, 방법에 아마 깊이 설명에 this을 통과하지 않습니다

거울을 사용하여 무엇을하려합니까.