2010-12-25 5 views
0

json에서 /로 json 객체를 직렬화/비 직렬화하고 싶습니다. Google gson이 바람직합니다. .google gson을 사용하는 json 객체 직렬화/비 직렬화

 
{ x: 1, y : 2}. 

그러나 내가 원하는

을 가지고 : 나는 새로운 GSON() toJson (새 A()) 내가 얻을 것이다 다음을 호출하는 경우, 그 다음

 
class A { 
    int x = 1; 
    int y = 2; 
} 

: I 클래스 A를 보자

그래서 컴파일시 클래스 이름을 모른 채 반사를 사용하여 역 직렬화 할 수 있습니다. 내가 어떻게 할 수 있니? 감사합니다.

답변

0

두 번째 예는 JSON이 아닙니다. 당신이 인스턴스 상태 및 특정 클래스 등을 유지 무언가를 원하는 경우에 GSON 사용이 바람직하거나 필요한 경우, 자바에서 구조 {class:"A", x:1, y:2}의 JSON을 생성하는 방법의 질문에 다음 특정 YAML

http://www.yaml.org/

+0

클래스 이름을 설명하는 객체 당 하나의 필드 만 추가하면됩니다. JSON은 Android 용으로 기본이므로 사용하는 것이 좋습니다. – Boris

+0

"직렬화"측면은 해결되지만 deseriaization은 여전히 ​​문제가 있습니다. – Boris

+0

그래, 나는 json이 당신이 원하는 것을 할 준비가되어 있다고 생각하지 않는다. 정말로 yaml을 확인해야합니다. YAML은 JSON의 상위 집합이며 원하는대로 할 수 있습니다 (내가 원하는 것을 이해한다고 가정 할 때) – Falmarri

0

체크 아웃 예를 들어 class A {int x = 1; int y = 2;} 구조의 경우 사용자 지정 직렬화를 구현해야합니다. 마찬가지로이 JSON에서이 Java 구조로 deserialize하려면 사용자 정의 deserialization을 구현해야합니다.

"수동"처리 대신에 Gson은 더 간단한 다형성 직렬화를 위해 곧 RuntimeTypeAdapter을 사용할 수 있습니다. 자세한 내용은 http://code.google.com/p/google-gson/issues/detail?id=231을 참조하십시오. RuntimeTypeAdapter을 사용할 수 없더라도 최소한 구성 가능한 사용자 지정 디시리얼라이저를 만드는 예제를 제공합니다.

JSON 매핑 API를 전환 할 수 있다면 작동 가능한 비교적 간단한 다형성 디시리얼라이저 메커니즘이 있으므로 Jackson을 고려하는 것이 좋습니다. http://programmerbruce.blogspot.com/2011/05/deserialize-json-with-jackson-into.html에 몇 가지 간단한 예제를 게시했습니다.

관련 문제