2012-09-25 4 views
3

JSON에 직렬화하려는 객체가 있습니다. 이 객체는 특정 객체의 목록이있는지도입니다. 비슷한 내용 :FlexJSON으로 Map <String, List <Object>>을 직렬화하는 방법

Map<String, List<Object>> map = new Map<String, List<Object>>(); 

FlexJSON을 사용하고 있습니다. flexjson.JSONSerializer과 만 작업 할 수 있습니다. 내 시도가 있습니다

JSONSerializer jsonSerializer = new JSONSerializer(); 
//  jsonSerializer.include("map"); 
//  jsonSerializer.include("map.myList.object"); 
jsonSerializer.transform(new MapTransformer(), "map"); 
jsonSerializer.exclude("*.class"); 

당신은 내가 Transformer 클래스와 지금 노력하고 있지만 성공하지 않은 볼 수 있듯이. 내 List<Object>에 자신의 이름 (예 : myList)이 있으면 주석 달린 행이 작동합니다. 그러나 그것이 나의지도의 values이기 때문에 그것은 자기 자신의 천국이 아니다.

FlexJSON을 사용하여 이러한 객체를 JSON으로 어떻게 직렬화 할 수 있습니까?

답변

4

Quoi가 정확하고 가장 가능성이 높은 답변입니다. 그러나 너무 당신은 당신이 할 수있는 방법에 대해 자세히 알아보세요 :

new JSONSerializer().include("values.values").serialize(myMap); 

지도 및 목록은 컨테이너와 그 안에 포함 된 요소에 대한 특별한 표현이있다. 컨테이너 값의 경로에 대해 이야기하고 싶을 때 경로에서 "값"표현식을 사용합니다. Map의 두 가지 특수 표현 인 "키"와 "값". 다른 컬렉션에는 "값"이 있습니다.

또 다른 옵션과 같이 와일드 카드를 사용하는 것입니다 : 당신은 클래스 속성을 제외 할뿐만 아니라 quoi를의 대답에 사용되는 와일드 카드를 볼 수 있습니다

new JSONSerializer().include("values.*").serialize(myMap); 

.

+0

필자의 경우 와일드 카드가 가장 좋습니다. 앞서 언급했듯이'flexjson.JSONSerializer' 객체에 대해서만 작동 할 수 있습니다. – woyaru

+0

'Map '에'include ("values")'가 있거나 없지만 이것을 시도했지만 json 결과는 동일합니다. ''values ​​''를 사용할 때지도에 다른'Object' 유형에 대한 json의 클래스 유형 데이터가 나타날 것으로 예상 했습니까? – raffian

3

String jsonString = new JSONSerializer().exclude("*.class").deepSerialize(map); 

deepSerialize 방법 대상 인스턴스의 깊은 직렬화를 수행보십시오. 기본적으로 모든 콜렉션, 맵 및 배열을 포함하므로 주석이 제외되는 것을 제외하고 포함은 무시됩니다.