TypeAdapter (Gson 2.3.1 API) - Google Gson

 


com.google.gson
Class TypeAdapter<T>

java.lang.Object
  extended by com.google.gson.TypeAdapter<T>

public abstract class TypeAdapter<T>
extends Object

Converts Java objects to and from JSON.

Defining a type's JSON form

By default Gson converts application classes to JSON using its built-in type adapters. If Gson's default JSON conversion isn't appropriate for a type, extend this class to customize the conversion. Here's an example of a type adapter for an (X,Y) coordinate point:

   public class PointAdapter extends TypeAdapter<Point> {
     public Point read(JsonReader reader) throws IOException {
       if (reader.peek() == JsonToken.NULL) {
         reader.nextNull();
         return null;
       }
       String xy = reader.nextString();
       String[] parts = xy.split(",");
       int x = Integer.parseInt(parts[0]);
       int y = Integer.parseInt(parts[1]);
       return new Point(x, y);
     }
     public void write(JsonWriter writer, Point value) throws IOException {
       if (value == null) {
         writer.nullValue();
         return;
       }
       String xy = value.getX() + "," + value.getY();
       writer.value(xy);
     }
   }

With this type adapter installed, Gson will convert Points to JSON as strings like "5,8" rather than objects like {"x":5,"y":8}. In this case the type adapter binds a rich Java class to a compact JSON value.

The read() method must read exactly one value and write() must write exactly one value. For primitive types this is means readers should make exactly one call to nextBoolean(), nextDouble(), nextInt(), nextLong(), nextString() or nextNull(). Writers should make exactly one call to one of value() or nullValue(). For arrays, type adapters should start with a call to beginArray(), convert all elements, and finish with a call to endArray(). For objects, they should start with beginObject(), convert the object, and finish with endObject(). Failing to convert a value or converting too many values may cause the application to crash.

Type adapters should be prepared to read null from the stream and write it to the stream. Alternatively, they should use nullSafe() method while registering the type adapter with Gson. If your Gson instance has been configured to GsonBuilder.serializeNulls(), these nulls will be written to the final document. Otherwise the value (and the corresponding name when writing to a JSON object) will be omitted automatically. In either case your type adapter must handle null.

To use a custom type adapter with Gson, you must register it with a GsonBuilder:

   GsonBuilder builder = new GsonBuilder();
   builder.registerTypeAdapter(Point.class, new PointAdapter());
   // if PointAdapter didn't check for nulls in its read/write methods, you should instead use
   // builder.registerTypeAdapter(Point.class, new PointAdapter().nullSafe());
   ...
   Gson gson = builder.create();
 

 

 

Since:
2.1

Constructor Summary
TypeAdapter()
           

 

Method Summary
 T fromJson(Reader in)
          Converts the JSON document in in to a Java object.
 T fromJson(String json)
          Converts the JSON document in json to a Java object.
 T fromJsonTree(JsonElement jsonTree)
          Converts jsonTree to a Java object.
 TypeAdapter<T> nullSafe()
          This wrapper method is used to make a type adapter null tolerant.
abstract  T read(JsonReader in)
          Reads one JSON value (an array, object, string, number, boolean or null) and converts it to a Java object.
 String toJson(T value)
          Converts value to a JSON document.
 void toJson(Writer out, T value)
          Converts value to a JSON document and writes it to out.
 JsonElement toJsonTree(T value)
          Converts value to a JSON tree.
abstract  void write(JsonWriter out, T value)
          Writes one JSON value (an array, object, string, number, boolean or null) for value.

 

Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

 

Constructor Detail

TypeAdapter

public TypeAdapter()

Method Detail

write

public abstract void write(JsonWriter out,
                           T value)
                    throws IOException
Writes one JSON value (an array, object, string, number, boolean or null) for value.

 

Parameters:
value - the Java object to write. May be null.
Throws:
IOException

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

toJson

public final void toJson(Writer out,
                         T value)
                  throws IOException
Converts value to a JSON document and writes it to out. Unlike Gson's similar toJson method, this write is strict. Create a lenient JsonWriter and call write(com.google.gson.stream.JsonWriter, Object) for lenient writing.

 

Parameters:
value - the Java object to convert. May be null.
Throws:
IOException
Since:
2.2

nullSafe

public final TypeAdapter<T> nullSafe()
This wrapper method is used to make a type adapter null tolerant. In general, a type adapter is required to handle nulls in write and read methods. Here is how this is typically done:
   Gson gson = new GsonBuilder().registerTypeAdapter(Foo.class,
   new TypeAdapter<Foo>() {
     public Foo read(JsonReader in) throws IOException {
       if (in.peek() == JsonToken.NULL) {
         in.nextNull();
         return null;
       }
       // read a Foo from in and return it
     }
     public void write(JsonWriter out, Foo src) throws IOException {
       if (src == null) {
         out.nullValue();
         return;
       }
       // write src as JSON to out
     }
   }).create();
 
You can avoid this boilerplate handling of nulls by wrapping your type adapter with this method. Here is how we will rewrite the above example:
   Gson gson = new GsonBuilder().registerTypeAdapter(Foo.class,
   new TypeAdapter<Foo>() {
     public Foo read(JsonReader in) throws IOException {
       // read a Foo from in and return it
     }
     public void write(JsonWriter out, Foo src) throws IOException {
       // write src as JSON to out
     }
   }.nullSafe()).create();
 
Note that we didn't need to check for nulls in our type adapter after we used nullSafe.

 


toJson

public final String toJson(T value)
                    throws IOException
Converts value to a JSON document. Unlike Gson's similar toJson method, this write is strict. Create a lenient JsonWriter and call write(com.google.gson.stream.JsonWriter, Object) for lenient writing.

 

Parameters:
value - the Java object to convert. May be null.
Throws:
IOException
Since:
2.2

toJsonTree

public final JsonElement toJsonTree(T value)
Converts value to a JSON tree.

 

Parameters:
value - the Java object to convert. May be null.
Returns:
the converted JSON tree. May be JsonNull.
Since:
2.2

read

public abstract T read(JsonReader in)
                throws IOException
Reads one JSON value (an array, object, string, number, boolean or null) and converts it to a Java object. Returns the converted object.

 

Returns:
the converted Java object. May be null.
Throws:
IOException

fromJson

public final T fromJson(Reader in)
                 throws IOException
Converts the JSON document in in to a Java object. Unlike Gson's similar fromJson method, this read is strict. Create a lenient JsonReader and call read(JsonReader) for lenient reading.

 

Returns:
the converted Java object. May be null.
Throws:
IOException
Since:
2.2

fromJson

public final T fromJson(String json)
                 throws IOException
Converts the JSON document in json to a Java object. Unlike Gson's similar fromJson method, this read is strict. Create a lenient JsonReader and call read(JsonReader) for lenient reading.

 

Returns:
the converted Java object. May be null.
Throws:
IOException
Since:
2.2

fromJsonTree

public final T fromJsonTree(JsonElement jsonTree)
Converts jsonTree to a Java object.

 

Parameters:
jsonTree - the Java object to convert. May be JsonNull.
Since:
2.2

 

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
27 [java][maven] jar 파일 의존성 한번에 다운로드 maven 사용 졸리운_곰 2023.08.24 192
26 Prometheus + Grafana로 Java 애플리케이션 모니터링하기 file 졸리운_곰 2020.12.17 279
25 Blockchain Implementation With Java Code file 졸리운_곰 2019.06.16 338
24 Java 코드로 이해하는 블록체인(Blockchain) 졸리운_곰 2019.06.16 377
23 순수 Java Application 코드로 Restful api 호출 졸리운_곰 2018.10.10 415
22 WebDAV 구현을 위한 환경 설정 file 졸리운_곰 2017.09.24 268
21 [Java] Apache Commons HttpClient로 SSL 통신하기 졸리운_곰 2017.03.27 784
20 JSoup를 이용한 HTML 파싱 졸리운_곰 2017.03.04 320
19 jsoup을 활용해서 Java에서 HTML 파싱하는 방법 정리 file 졸리운_곰 2017.03.04 579
18 NSA의 Dataflow 엔진 Apache NiFi 소개와 설치 file 졸리운_곰 2017.01.23 630
17 wordpress-java-integration 자바와 워드프레스 통합 졸리운_곰 2016.12.30 298
16 Create New Posts in Wordpress using Java and XMLRpc 졸리운_곰 2016.11.14 268
15 자바로 POST 방식으로 통신하기, java httppost 클래스를 활용한 예제 졸리운_곰 2016.11.14 647
14 [Java]아파치 HttpClient사용하기 file 졸리운_곰 2016.11.14 301
13 Building a Search Engine With Nutch Solr And Hadoop file 졸리운_곰 2016.04.21 435
12 Nutch and Hadoop Tutorial file 졸리운_곰 2016.04.21 391
11 Latest step by Step Installation guide for dummies: Nutch 0. file 졸리운_곰 2016.04.21 305
10 Nutch 초간단 빌드와 실행 졸리운_곰 2016.04.21 681
9 Nutch로 알아보는 Crawling 구조 - Joinc 졸리운_곰 2016.04.21 536
8 A tiny bittorrent library Java: 자바로 만든 작은 bittorrent 라이브러리 file 졸리운_곰 2016.04.20 418
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED