Понедельник, 21 октября 2019

gson 예제

29

위의 코드는 JSON 개체가 있는 Output.json이라는 파일을 생성합니다. 여기서는 바이트 스트림이 아닌 문자 스트림을 사용했습니다. toJson() 메서드가 부속 가능한 인스턴스를 예상하고 바이트 스트림이 추가 가능한 인터페이스의 하위 항목이 아니기 때문에 바이트 스트림을 사용할 수 없습니다. 부속 가능한 인터페이스는 바이트가 아닌 문자로 작동합니다. Java는 다음 예제와 같이 바이트 스트림을 문자 스트림으로 변환하는 InputStreamReader(Java Doc) 및 OutputStreamWriter(Java Doc) 클래스를 제공합니다. 경우에 따라 혼합 된 형식을 포함 하는 JSON 배열을 처리 하는 경우가 있습니다. 예를 들어 [`hello`,5,{name:`GREETINGS`, source:`guest`}] Gson은 직렬화 중에 DateTime 개체로 실행될 때 serialize()를 호출합니다. 다음은 JsonCompactFormatter: Deserializer: 직렬화기: 직렬화기를 Java 모델에서 JSON 표현으로 변환할 수 있도록 하는 기본 JsonPrintFormatter를 사용하도록 Gson 인스턴스를 구성하는 방법을 보여 줍니다. 개체의 사용자 지정 표현을 사용하도록 Gson을 구성할 수도 있습니다. Gson은 범위에 따라 클래스의 Json 직렬화/역직렬화를 제어하는 @Expose 개의 추가를 제공합니다.

@Expose 지원을 갖는 변수가 있는 다음 클래스를 고려하십시오. 이 클래스에서는 직렬화를 위해 이름 및 rollno 변수를 노출해야 합니다. 그런 다음 GsonBuilder.excludeFieldsWithoutExposeAnnotation() 메서드를 사용하여 노출된 변수만 직렬화/역직렬화되어야 함을 나타냅니다. 다음 예제를 참조하십시오. Gson 스트리밍 API를 사용하여 Employee 개체를 작성하는 방법을 살펴보겠습니다. Java 개체를 JSON으로 변환하는 것은 Gson 스트리밍 API를 구문 분석하는 것보다 비교적 쉽습니다. 기본적으로 JsonWriter는 json을 컴팩트한 형태로 작성하지만 예쁜 인쇄를 위해 들여 쓰기를 설정할 수 있습니다. 예, 하지만 이러한 매우 간단 하 고 당신이 필요에 따라 JSON을 조작 할 수 없습니다 위의 예제를 사용 하지 않습니다. 다음 문서를 권장 합니다.

SVN 저장소에서 코드 예제를 찾을 수 있습니다.즉, 이제 maven 프로젝트는 Gson 을 사용할 수 있습니다. 더 많은 GSON 예제를 보려면 두 번째 부분을 방문하여 보다 복잡한 예제를 살펴보고 GSON 디직직렬화를 사용하여 직렬화 프로세스를 완전히 제어하는 방법에 대해 설명하십시오. 사용할 기본 클래스는 새 Gson()을 호출하여 만들 수 있는 Gson입니다. 버전 제어 등과 같은 다양한 설정으로 Gson 인스턴스를 만드는 데 사용할 수있는 클래스 GsonBuilder도 있습니다. 우리는 만들고 GsonBuilder와 Gson을 구성합니다. 필드 이름 지정 정책은 필드 명명 정책.UPPER_CAMEL_CASE로 설정됩니다. 인스턴스화하려는 형식이 매개 변수화된 형식인 경우가 있습니다. 일반적으로 실제 인스턴스는 원시 형식이므로 문제가 되지 않습니다. 다음은 Json(obj)에 전화할 때 Gson이 obj.getClass()를 호출하여 필드에 대한 정보를 직렬화하는 예입니다. 마찬가지로 일반적으로 에서 MyClass.class 개체를 json(json, MyClass.class) 메서드에 전달할 수 있습니다. 개체가 제네릭이 아닌 형식인 경우 이 작업은 잘 작동합니다.

그러나 개체가 제네릭 형식인 경우 Java 형식 삭제로 인해 제네릭 형식 정보가 손실됩니다. 여기에 요점을 설명하는 예가 있습니다 : 나는 변환 자체를 수행 할 수있는 다른 JSON 파서 API를 찾고 Google Gson에 대해 발견했습니다.