Gson-クイックガイド
Google Gsonは、JavaオブジェクトをJSONに、またはその逆にシリアル化するための単純なJavaベースのライブラリです。これは、Googleによって開発されたオープンソースライブラリです。
次の点は、このライブラリを使用する必要がある理由を強調しています-
Standardized − Gsonは、Googleが管理する標準化されたライブラリです。
Efficient −これは、Java標準ライブラリの信頼性が高く、高速で、効率的な拡張機能です。
Optimized −ライブラリは高度に最適化されています。
Support Generics −ジェネリックスを広範囲にサポートします。
Supports complex inner classes −深い継承階層を持つ複雑なオブジェクトをサポートします。
Gsonの特徴
これがGsonの最も顕著な特徴のいくつかのリストです-
Easy to use − Gson APIは、一般的に使用されるユースケースを簡素化するための高レベルのファサードを提供します。
No need to create mapping − Gson APIは、シリアル化されるほとんどのオブジェクトにデフォルトのマッピングを提供します。
Performance− Gsonは非常に高速で、メモリフットプリントが低くなっています。大きなオブジェクトのグラフやシステムに適しています。
Clean JSON − Gsonは、読みやすいクリーンでコンパクトなJSON結果を作成します。
No Dependency − Gsonライブラリは、JDK以外のライブラリを必要としません。
Open Source−Gsonライブラリはオープンソースです。それは自由に利用できます。
JSONを処理する3つの方法
Gsonは、JSONを処理するための3つの代替方法を提供します-
ストリーミングAPI
JSONコンテンツを個別のイベントとして読み書きします。 JsonReader そして JsonWriter データをトークンとして読み取り/書き込みします。 JsonToken。
これは、JSONを処理するための3つのアプローチの中で最も強力なアプローチです。オーバーヘッドが最も低く、読み取り/書き込み操作が非常に高速です。これは、XML用のStaxパーサーに類似しています。
ツリーモデル
JSONドキュメントのメモリ内ツリー表現を準備します。JsonObjectノードのツリーを構築します。これは柔軟なアプローチであり、XMLのDOMパーサーに類似しています。
データバインディング
プロパティアクセサを使用して、JSONをPOJO(Plain Old Java Object)との間で変換します。Gsonは、データ型アダプターを使用してJSONの読み取り/書き込みを行います。これは、XML用のJAXBパーサーに類似しています。
ローカル環境のセットアップ
それでもJavaプログラミング言語のローカル環境をセットアップしたい場合は、このセクションで、マシンにJavaをダウンロードしてセットアップする方法について説明します。以下の手順で環境を設定してください。
Java SEは、Javaのダウンロードリンクから無料で入手できます。したがって、オペレーティングシステムに基づいたバージョンをダウンロードします。
指示に従ってJavaをダウンロードし、 .exeマシンにJavaをインストールします。マシンにJavaをインストールしたら、正しいインストールディレクトリを指すように環境変数を設定する必要があります。
Windows 2000 / XPでのパスの設定
Javaをc:\ Program Files \ java \ jdkディレクトリにインストールしたと仮定します-
「マイコンピュータ」を右クリックし、「プロパティ」を選択します。
[詳細設定]タブの下にある[環境変数]ボタンをクリックします。
次に、「Path」変数を変更して、Java実行可能ファイルへのパスも含まれるようにします。たとえば、パスが現在「C:\ WINDOWS \ SYSTEM32」に設定されている場合は、パスを「C:\ WINDOWS \ SYSTEM32; c:\ ProgramFiles \ java \ jdk \ bin」に変更します。
Windows 95/98 / MEでパスを設定する
Javaをc:\ Program Files \ java \ jdkディレクトリにインストールしたと仮定します-
'C:\ autoexec.bat'ファイルを編集し、最後に次の行を追加します。 'SET PATH =%PATH%; C:\ Program Files \ java \ jdk \ bin'
Linux、UNIX、Solaris、FreeBSDのパスの設定
環境変数 PATHJavaバイナリがインストールされている場所を指すように設定する必要があります。これを行うのに問題がある場合は、シェルのドキュメントを参照してください。
たとえば、シェルとしてbashを使用する場合は、「。bashrc:export PATH = / path / to / java:$ PATH」の末尾に次の行を追加します。
人気のあるJavaエディター
Javaプログラムを作成するには、テキストエディタが必要です。市場にはかなりの数の洗練されたIDEがあります。しかし今のところ、あなたは次のいずれかを考えることができます-
Notepad − Windowsでは、メモ帳(このチュートリアルで推奨)やTextPadなどの単純なテキストエディターを使用できます。
Netbeans −オープンソースで無料のJava IDEであり、からダウンロードできます。 https://netbeans.org/index.html。
Eclipse −これはEclipseオープンソースコミュニティによって開発されたJava IDEでもあり、からダウンロードできます。 https://www.eclipse.org/。
Gsonアーカイブをダウンロード
Gsonjarファイルの最新バージョンをからダウンロードします。 gson-2.3.1.jar。このチュートリアルの執筆時点で、gson-2.3.1.jarをダウンロードし、C:\> gsonフォルダーにコピーしました。
OS | アーカイブ名 |
---|---|
ウィンドウズ | gson-2.3.1.jar |
Linux | gson-2.3.1.jar |
マック | gson-2.3.1.jar |
Gson環境を設定する
をセットする GSON_HOME Gsonjarがマシンに保存されているベースディレクトリの場所を指す環境変数。
OS | 出力 |
---|---|
ウィンドウズ | 環境変数GSON_HOMEをC:\ gsonに設定します |
Linux | GSON_HOME = / usr / local / gsonをエクスポートします |
マック | GSON_HOME = / Library / gsonをエクスポートします |
CLASSPATH変数を設定します
をセットする CLASSPATH Gsonjarの場所を指す環境変数。
OS | 出力 |
---|---|
ウィンドウズ | 環境変数CLASSPATHを%CLASSPATH%;%GSON_HOME%\ gson-2.3.1.jar;。;に設定します。 |
Linux | CLASSPATH = $ CLASSPATH:$ GSON_HOME /gson-2.3.1.jarをエクスポートします。 |
マック | CLASSPATH = $ CLASSPATH:$ GSON_HOME /gson-2.3.1.jarをエクスポートします。 |
Google Gsonライブラリの詳細に入る前に、実際のアプリケーションを見てみましょう。この例では、Studentクラス。学生の詳細を含むJSON文字列を作成し、デシリアライズしてstudent オブジェクトを作成し、それをJSON文字列にシリアル化します。
例
C:\> GSON_WORKSPACEにGsonTesterという名前のJavaクラスファイルを作成します。
File − GsonTester.java
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class GsonTester {
public static void main(String[] args) {
String jsonString = "{\"name\":\"Mahesh\", \"age\":21}";
GsonBuilder builder = new GsonBuilder();
builder.setPrettyPrinting();
Gson gson = builder.create();
Student student = gson.fromJson(jsonString, Student.class);
System.out.println(student);
jsonString = gson.toJson(student);
System.out.println(jsonString);
}
}
class Student {
private String name;
private int age;
public Student(){}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString() {
return "Student [ name: "+name+", age: "+ age+ " ]";
}
}
結果を確認する
を使用してクラスをコンパイルします javac 次のようにコンパイラ-
C:\GSON_WORKSPACE>javac GsonTester.java
次に、GsonTesterを実行して結果を確認します-
C:\GSON_WORKSPACE>java GsonTester
出力を確認します。
Student [ name: Mahesh, age: 21 ]
{
"name" : "Mahesh",
"age" : 21
}
覚えておくべき手順
ここで考慮すべき重要な手順は次のとおりです。
ステップ1-GsonBuilderを使用してGsonオブジェクトを作成する
Gsonオブジェクトを作成します。再利用可能なオブジェクトです。
GsonBuilder builder = new GsonBuilder();
builder.setPrettyPrinting();
Gson gson = builder.create();
ステップ2-JSONをオブジェクトに逆シリアル化する
fromJson()メソッドを使用して、JSONからオブジェクトを取得します。Json文字列/ Json文字列のソースとオブジェクトタイプをパラメータとして渡します。
//Object to JSON Conversion
Student student = gson.fromJson(jsonString, Student.class);
ステップ3-オブジェクトをJSONにシリアル化する
toJson()メソッドを使用して、オブジェクトのJSON文字列表現を取得します。
//Object to JSON Conversion
jsonString = gson.toJson(student);
Gsonは、GoogleGsonライブラリのメインアクタークラスです。Javaオブジェクトを一致するJSON構造に、またはその逆に変換する機能を提供します。Gsonは最初にGsonBuilderを使用して構築され、次にtoJson(Object)またはfromJson(String、Class)メソッドを使用してJSON構造を読み取り/書き込みします。
クラス宣言
以下はの宣言です com.google.gson.Gson クラス-
public final class Gson
extends Object
コンストラクター
シニア番号 | コンストラクターと説明 |
---|---|
1 | Gson() デフォルト設定でGsonオブジェクトを構築します。 |
クラスメソッド
シニア番号 | 方法と説明 |
---|---|
1 | <T> T fromJson(JsonElement json, Class<T> classOfT) このメソッドは、指定された解析ツリーから読み取られたJsonを指定されたタイプのオブジェクトに逆シリアル化します。 |
2 | <T> T fromJson(JsonElement json, Type typeOfT) このメソッドは、指定された解析ツリーから読み取られたJsonを指定されたタイプのオブジェクトに逆シリアル化します。 |
3 | <T> T fromJson(JsonReader reader, Type typeOfT) リーダーから次のJSON値を読み取り、typeOfT型のオブジェクトに変換します。 |
4 | <T> T fromJson(Reader json, Class<T> classOfT) このメソッドは、指定されたリーダーから読み取られたJsonを指定されたクラスのオブジェクトに逆シリアル化します。 |
5 | <T> T fromJson(Reader json, Type typeOfT) このメソッドは、指定されたリーダーから読み取られたJsonを指定されたタイプのオブジェクトに逆シリアル化します。 |
6 | <T> T fromJson(String json, Class<T> classOfT) このメソッドは、指定されたJsonを指定されたクラスのオブジェクトに逆シリアル化します。 |
7 | <T> T fromJson(String json, Type typeOfT) このメソッドは、指定されたJsonを指定されたタイプのオブジェクトに逆シリアル化します。 |
8 | <T> TypeAdapter<T> getAdapter(Class<T> type) タイプのタイプアダプタを返します。 |
9 | <T> TypeAdapter<T> getAdapter(TypeToken<T> type) タイプのタイプアダプタを返します。 |
10 | <T> TypeAdapter<T> getDelegateAdapter(TypeAdapterFactory skipPast, TypeToken<T> type) このメソッドは、指定されたタイプの代替タイプのアダプターを取得するために使用されます。 |
11 | String toJson(JsonElement jsonElement) JsonElementsのツリーを同等のJSON表現に変換します。 |
12 | void toJson(JsonElement jsonElement, Appendable writer) JsonElementsのツリーに相当するJSONを書き出します。 |
13 | void toJson(JsonElement jsonElement, JsonWriter writer) jsonElementのJSONをライターに書き込みます。 |
14 | String toJson(Object src) このメソッドは、指定されたオブジェクトを同等のJson表現にシリアル化します。 |
15 | void toJson(Object src, Appendable writer) このメソッドは、指定されたオブジェクトを同等のJson表現にシリアル化します。 |
16 | String toJson(Object src, Type typeOfSrc) このメソッドは、ジェネリック型のオブジェクトを含む、指定されたオブジェクトを同等のJson表現にシリアル化します。 |
17 | void toJson(Object src, Type typeOfSrc, Appendable writer) このメソッドは、ジェネリック型のオブジェクトを含む、指定されたオブジェクトを同等のJson表現にシリアル化します。 |
18 | void toJson(Object src, Type typeOfSrc, JsonWriter writer) typeOfSrc型のsrcのJSON表現をwriterに書き込みます。 |
19 | JsonElement toJsonTree(Object src) このメソッドは、指定されたオブジェクトをJsonElementsのツリーとして同等の表現にシリアル化します。 |
20 | JsonElement toJsonTree(Object src, Type typeOfSrc) このメソッドは、ジェネリック型のオブジェクトを含む指定されたオブジェクトを、JsonElementsのツリーとしての同等の表現にシリアル化します。 |
21 | String toString() |
継承されたメソッド
このクラスは、次のクラスからメソッドを継承します-
- java.lang.Object
例
任意のエディタを使用して次のJavaプログラムを作成し、たとえばC:/> GSON_WORKSPACEに保存します。
File − GsonTester.java
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class GsonTester {
public static void main(String[] args) {
String jsonString = "{\"name\":\"Mahesh\", \"age\":21}";
GsonBuilder builder = new GsonBuilder();
builder.setPrettyPrinting();
Gson gson = builder.create();
Student student = gson.fromJson(jsonString, Student.class);
System.out.println(student);
jsonString = gson.toJson(student);
System.out.println(jsonString);
}
}
class Student {
private String name;
private int age;
public Student(){}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString() {
return "Student [ name: "+name+", age: "+ age+ " ]";
}
}
結果を確認する
を使用してクラスをコンパイルします javac 次のようにコンパイラ-
C:\GSON_WORKSPACE>javac GsonTester.java
次に、GsonTesterを実行して結果を確認します-
C:\GSON_WORKSPACE>java GsonTester
出力を確認します
Student [ name: Mahesh, age: 21 ]
{
"name" : "Mahesh",
"age" : 21
}
JavaオブジェクトをJsonファイルにシリアル化し、そのJsonファイルを読み取ってオブジェクトを元に戻しましょう。この例では、Studentクラス。を作成しますstudent.json を持つファイル json の表現 Student オブジェクト。
例
名前の付いたJavaクラスファイルを作成します GsonTester に C:\>GSON_WORKSPACE。
ファイル-GsonTester.java
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class GsonTester {
public static void main(String args[]) {
GsonTester tester = new GsonTester();
try {
Student student = new Student();
student.setAge(10);
student.setName("Mahesh");
tester.writeJSON(student);
Student student1 = tester.readJSON();
System.out.println(student1);
}
catch(FileNotFoundException e) {
e.printStackTrace();
}
catch(IOException e) {
e.printStackTrace();
}
}
private void writeJSON(Student student) throws IOException {
GsonBuilder builder = new GsonBuilder();
Gson gson = builder.create();
FileWriter writer = new FileWriter("student.json");
writer.write(gson.toJson(student));
writer.close();
}
private Student readJSON() throws FileNotFoundException {
GsonBuilder builder = new GsonBuilder();
Gson gson = builder.create();
BufferedReader bufferedReader = new BufferedReader(
new FileReader("student.json"));
Student student = gson.fromJson(bufferedReader, Student.class);
return student;
}
}
class Student {
private String name;
private int age;
public Student(){}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString() {
return "Student [ name: "+name+", age: "+ age+ " ]";
}
}
結果を確認する
を使用してクラスをコンパイルします javac 次のようにコンパイラ-
C:\GSON_WORKSPACE>javac GsonTester.java
次に、GsonTesterを実行して結果を確認します-
C:\GSON_WORKSPACE>java GsonTester
出力を確認する
Student [ name: Mahesh, age: 10 ]
データバインディングAPIは、プロパティアクセサーまたはアノテーションを使用して、JSONをPOJO(Plain Old Java Object)との間で変換するために使用されます。2種類あります。
Primitives Data Binding − JSONをJavaマップ、リスト、文字列、数値、ブール値、およびNULLオブジェクトとの間で変換します。
Objects Data Binding −JSONを任意のJAVAタイプとの間で変換します。
Gsonは、両方のタイプのデータバインディングのJSONを読み取り/書き込みします。データバインディングは、XML用のJAXBパーサーに類似しています。
プリミティブデータバインディング
プリミティブデータバインディングとは、JSONからJAVAコアデータ型および組み込みコレクションへのマッピングを指します。Gsonは、プリミティブデータ型をシリアル化/逆シリアル化するために使用できるさまざまな組み込みアダプターを提供します。
例
プリミティブデータバインディングの動作を見てみましょう。ここでは、JAVAの基本型をJSONに直接マッピングします。その逆も同様です。
名前の付いたJavaクラスファイルを作成します GsonTester に C:\>Gson_WORKSPACE。
File − GsonTester.java
import java.util.Arrays;
import com.google.gson.Gson;
public class GsonTester {
public static void main(String args[]) {
Gson gson = new Gson();
String name = "Mahesh Kumar";
long rollNo = 1;
boolean verified = false;
int[] marks = {100,90,85};
//Serialization
System.out.println("{");
System.out.println("name: " + gson.toJson(name) +",");
System.out.println("rollNo: " + gson.toJson(rollNo) +",");
System.out.println("verified: " + gson.toJson(verified) +",");
System.out.println("marks:" + gson.toJson(marks));
System.out.println("}");
//De-serialization
name = gson.fromJson("\"Mahesh Kumar\"", String.class);
rollNo = gson.fromJson("1", Long.class);
verified = gson.fromJson("false", Boolean.class);
marks = gson.fromJson("[100,90,85]", int[].class);
System.out.println("name: " + name);
System.out.println("rollNo: " + rollNo);
System.out.println("verified: " +verified);
System.out.println("marks:" + Arrays.toString(marks));
}
}
結果を確認する
を使用してクラスをコンパイルします javac 次のようにコンパイラ-
C:\GSON_WORKSPACE>javac GsonTester.java
今実行します GsonTester 結果を見るために-
C:\GSON_WORKSPACE>java GsonTester
出力を確認します。
{
name: "Mahesh Kumar",
rollNo: 1,
verified: false,
marks:[100,90,85]
}
name: Mahesh Kumar
rollNo: 1
verified: false
marks:[100, 90, 85]
オブジェクトデータバインディングとは、JSONを任意のJAVAオブジェクトにマッピングすることです。
//Create a Gson instance
Gson gson = new Gson();
//map Student object to JSON content
String jsonString = gson.toJson(student);
//map JSON content to Student object
Student student1 = gson.fromJson(jsonString, Student.class);
例
オブジェクトデータバインディングの動作を見てみましょう。ここでは、JAVAオブジェクトをJSONに直接マッピングします。その逆も同様です。
名前の付いたJavaクラスファイルを作成します GsonTester C:\> GSON_WORKSPACEで。
ファイル-GsonTester.java
import com.google.gson.Gson;
public class GsonTester {
public static void main(String args[]) {
Gson gson = new Gson();
Student student = new Student();
student.setAge(10);
student.setName("Mahesh");
String jsonString = gson.toJson(student);
System.out.println(jsonString);
Student student1 = gson.fromJson(jsonString, Student.class);
System.out.println(student1);
}
}
class Student {
private String name;
private int age;
public Student(){}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String toString() {
return "Student [ name: "+name+", age: "+ age+ " ]";
}
}
結果を確認する
を使用してクラスをコンパイルします javac 次のようにコンパイラ-
C:\GSON_WORKSPACE>javac GsonTester.java
今実行します GsonTester 結果を見るために-
C:\GSON_WORKSPACE>java GsonTester
出力を確認します。
{"name":"Mahesh","age":10}
Student [ name: Mahesh, age: 10 ]
ツリーモデルは、JSONドキュメントのメモリ内ツリー表現を準備します。JsonObjectノードのツリーを構築します。これは柔軟なアプローチであり、XMLのDOMパーサーに類似しています。
JSONからツリーを作成する
JsonParserは、JSONを読み取った後、ツリーのルートノードへのポインターを提供します。ルートノードは、ツリー全体をトラバースするために使用できます。提供されたJSON文字列のルートノードを取得するには、次のコードスニペットを検討してください。
//Create an JsonParser instance
JsonParser parser = new JsonParser();
String jsonString =
"{\"name\":\"Mahesh Kumar\", \"age\":21,\"verified\":false,\"marks\": [100,90,85]}";
//create tree from JSON
JsonElement rootNode = parser.parse(jsonString);
トラバースツリーモデル
ツリーをトラバースしながらルートノードへの相対パスを使用して各ノードを取得し、データを処理します。次のコードスニペットは、ツリーをトラバースする方法を示しています。
JsonObject details = rootNode.getAsJsonObject();
JsonElement nameNode = details.get("name");
System.out.println("Name: " +nameNode.getAsString());
JsonElement ageNode = details.get("age");
System.out.println("Age: " + ageNode.getAsInt());
例
名前の付いたJavaクラスファイルを作成します GsonTester C:\> GSON_WORKSPACEで。
File − GsonTester.java
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.JsonPrimitive;
public class GsonTester {
public static void main(String args[]) {
String jsonString =
"{\"name\":\"Mahesh Kumar\", \"age\":21,\"verified\":false,\"marks\": [100,90,85]}";
JsonParser parser = new JsonParser();
JsonElement rootNode = parser.parse(jsonString);
if (rootNode.isJsonObject()) {
JsonObject details = rootNode.getAsJsonObject();
JsonElement nameNode = details.get("name");
System.out.println("Name: " +nameNode.getAsString());
JsonElement ageNode = details.get("age");
System.out.println("Age: " + ageNode.getAsInt());
JsonElement verifiedNode = details.get("verified");
System.out.println("Verified: " + (verifiedNode.getAsBoolean() ? "Yes":"No"));
JsonArray marks = details.getAsJsonArray("marks");
for (int i = 0; i < marks.size(); i++) {
JsonPrimitive value = marks.get(i).getAsJsonPrimitive();
System.out.print(value.getAsInt() + " ");
}
}
}
}
結果を確認する
を使用してクラスをコンパイルします javac 次のようにコンパイラ-
C:\GSON_WORKSPACE>javac GsonTester.java
今実行します GsonTester 結果を見るために-
C:\GSON_WORKSPACE>java GsonTester
出力を確認します。
Name: Mahesh Kumar
Age: 21
Verified: No
100 90 85
ストリーミングAPIは、JSONトークンをトークンごとに読み取るために使用されます。JSONコンテンツを個別のイベントとして読み書きします。JsonReader そして JsonWriter データをトークンとして読み取り/書き込みします。 JsonToken。
これは、JSONを処理するための3つのアプローチの中で最も強力なアプローチです。オーバーヘッドが最も低く、読み取り/書き込み操作が非常に高速です。これは、XML用のStaxパーサーに類似しています。
この章では、GSONストリーミングAPIを使用してJSONデータを読み取る方法を紹介します。ストリーミングAPIはトークンの概念で機能し、Jsonのすべての詳細は慎重に処理する必要があります。
//create JsonReader object and pass it the json source or json text.
JsonReader reader = new JsonReader(new StringReader(jsonString));
//start reading json
reader.beginObject();
//get the next token
JsonToken token = reader.peek();
//check the type of the token
if (token.equals(JsonToken.NAME)) {
//get the current token
fieldname = reader.nextName();
}
例
どれどれ JsonReader動作中。名前の付いたJavaクラスファイルを作成しますGsonTester C:\> GSON_WORKSPACEで。
ファイル-GsonTester.java
import java.io.IOException;
import java.io.StringReader;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonToken;
public class GsonTester {
public static void main(String args[]) {
String jsonString =
"{\"name\":\"Mahesh Kumar\", \"age\":21,\"verified\":false,\"marks\": [100,90,85]}";
JsonReader reader = new JsonReader(new StringReader(jsonString));
try {
handleJsonObject(reader);
}
catch (IOException e) {
e.printStackTrace();
}
}
private static void handleJsonObject(JsonReader reader) throws IOException {
reader.beginObject();
String fieldname = null;
while (reader.hasNext()) {
JsonToken token = reader.peek();
if (token.equals(JsonToken.BEGIN_ARRAY)) {
System.out.print("Marks [ ");
handleJsonArray(reader);
System.out.print("]");
} else if (token.equals(JsonToken.END_OBJECT)) {
reader.endObject();
return;
} else {
if (token.equals(JsonToken.NAME)) {
//get the current token
fieldname = reader.nextName();
}
if ("name".equals(fieldname)) {
//move to next token
token = reader.peek();
System.out.println("Name: "+reader.nextString());
}
if("age".equals(fieldname)) {
//move to next token
token = reader.peek();
System.out.println("Age:" + reader.nextInt());
}
if("verified".equals(fieldname)) {
//move to next token
token = reader.peek();
System.out.println("Verified:" + reader.nextBoolean());
}
}
}
}
private static void handleJsonArray(JsonReader reader) throws IOException {
reader.beginArray();
String fieldname = null;
while (true) {
JsonToken token = reader.peek();
if (token.equals(JsonToken.END_ARRAY)) {
reader.endArray();
break;
} else if (token.equals(JsonToken.BEGIN_OBJECT)) {
handleJsonObject(reader);
} else if (token.equals(JsonToken.END_OBJECT)) {
reader.endObject();
} else {
System.out.print(reader.nextInt() + " ");
}
}
}
}
結果を確認する
を使用してクラスをコンパイルします javac 次のようにコンパイラ-
C:\GSON_WORKSPACE>javac GsonTester.java
今実行します GsonTester 結果を見るために-
C:\GSON_WORKSPACE>java GsonTester
出力を確認します。
Name: Mahesh Kumar
Age:21
Verified:false
Marks [ 100 90 85 ]
この章では、配列、コレクション、およびジェネリックのシリアル化/逆シリアル化について説明します。
配列の例
int[] marks = {100,90,85};
//Serialization
System.out.println("marks:" + gson.toJson(marks));
//De-serialization
marks = gson.fromJson("[100,90,85]", int[].class);
System.out.println("marks:" + Arrays.toString(marks));
例
配列のシリアル化/逆シリアル化の動作を見てみましょう。名前の付いたJavaクラスファイルを作成しますGsonTester C:\> GSON_WORKSPACEで。
File − GsonTester.java
import java.util.Arrays;
import com.google.gson.Gson;
public class GsonTester {
public static void main(String args[]) {
Gson gson = new Gson();
int[] marks = {100,90,85};
String[] names = {"Ram","Shyam","Mohan"};
//Serialization
System.out.print("{");
System.out.print("marks:" + gson.toJson(marks) + ",");
System.out.print("names:" + gson.toJson(names));
System.out.println("}");
//De-serialization
marks = gson.fromJson("[100,90,85]", int[].class);
names = gson.fromJson("[\"Ram\",\"Shyam\",\"Mohan\"]", String[].class);
System.out.println("marks:" + Arrays.toString(marks));
System.out.println("names:" + Arrays.toString(names));
}
}
結果を確認する
を使用してクラスをコンパイルします javac 次のようにコンパイラ-
C:\GSON_WORKSPACE>javac GsonTester.java
次に、GsonTesterを実行して結果を確認します-
C:\GSON_WORKSPACE>java GsonTester
出力を確認します。
{marks:[100,90,85],names:["Ram","Shyam","Mohan"]}
marks:[100, 90, 85]
names:[Ram, Shyam, Mohan]
コレクションの例
List marks = new ArrayList();
//Serialization
System.out.println("marks:" + gson.toJson(marks));
//De-serialization
//get the type of the collection.
Type listType = new TypeToken<list>(){}.getType();
//pass the type of collection
marks = gson.fromJson("[100,90,85]", listType);
System.out.println("marks:" +marks);</list>
例
コレクションのシリアル化/逆シリアル化の動作を見てみましょう。名前の付いたJavaクラスファイルを作成しますGsonTester C:\> GSON_WORKSPACEで。
File − GsonTester.java
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Collection;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
public class GsonTester {
public static void main(String args[]) {
Gson gson = new Gson();
Collection<Integer> marks = new ArrayList<Integer>();
marks.add(100);
marks.add(90);
marks.add(85);
//Serialization
System.out.print("{");
System.out.print("marks:" + gson.toJson(marks));
System.out.println("}");
//De-serialization
Type listType = new TypeToken<Collection<Integer>>(){}.getType();
marks = gson.fromJson("[100,90,85]", listType);
System.out.println("marks:" +marks);
}
}
結果を確認する
を使用してクラスをコンパイルします javac 次のようにコンパイラ-
C:\GSON_WORKSPACE>javac GsonTester.java
今実行します GsonTester 結果を見るために-
C:\GSON_WORKSPACE>java GsonTester
出力を確認します。
{marks:[100,90,85]}
marks:[100, 90, 85]
ジェネリックスの例
Gsonは、JavaリフレクションAPIを使用して、Jsonテキストがマップされるオブジェクトのタイプを取得します。しかし、ジェネリックスでは、この情報はシリアル化中に失われます。この問題に対処するために、Gsonはクラスを提供していますcom.google.gson.reflect.TypeToken 汎用オブジェクトのタイプを格納します。
例
Genericsのシリアル化/逆シリアル化の動作を見てみましょう。名前の付いたJavaクラスファイルを作成しますGsonTester C:\> GSON_WORKSPACEで。
File − GsonTester.java
import java.lang.reflect.Type;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
public class GsonTester {
public static void main(String args[]) {
// create a shape class of type circle.
Shape<Circle> shape = new Shape<Circle>();
// Create a Circle object
Circle circle = new Circle(5.0);
//assign circle to shape
shape.setShape(circle);
Gson gson = new Gson();
// Define a Type shapeType of type circle.
Type shapeType = new TypeToken<Shape<Circle>>() {}.getType();
//Serialize the json as ShapeType
String jsonString = gson.toJson(shape, shapeType);
System.out.println(jsonString);
Shape shape1 = gson.fromJson(jsonString, Shape.class);
System.out.println(shape1.get().getClass());
System.out.println(shape1.get().toString());
System.out.println(shape1.getArea());
Shape shape2 = gson.fromJson(jsonString, shapeType);
System.out.println(shape2.get().getClass());
System.out.println(shape2.get().toString());
System.out.println(shape2.getArea());
}
}
class Shape <T> {
public T shape;
public void setShape(T shape) {
this.shape = shape;
}
public T get() {
return shape;
}
public double getArea() {
if(shape instanceof Circle) {
return ((Circle) shape).getArea();
} else {
return 0.0;
}
}
}
class Circle {
private double radius;
public Circle(double radius){
this.radius = radius;
}
public String toString() {
return "Circle";
}
public double getRadius() {
return radius;
}
public void setRadius(double radius) {
this.radius = radius;
}
public double getArea() {
return (radius*radius*3.14);
}
}
結果を確認する
を使用してクラスをコンパイルします javac 次のようにコンパイラ-
C:\GSON_WORKSPACE>javac GsonTester.java
今実行します GsonTester 結果を見るために-
C:\GSON_WORKSPACE>java GsonTester
出力を確認します。
{"shape":{"radius":5.0}}
class com.google.gson.internal.LinkedTreeMap
{radius = 5.0}
0.0
class Circle
Circle
78.5
この章では、内部クラスを持つクラスのシリアル化/逆シリアル化について説明します。
ネストされたインナークラスの例
Student student = new Student();
student.setRollNo(1);
Student.Name name = student.new Name();
name.firstName = "Mahesh";
name.lastName = "Kumar";
student.setName(name);
//serialize inner class object
String nameString = gson.toJson(name);
System.out.println(nameString);
//deserialize inner class object
name = gson.fromJson(nameString,Student.Name.class);
System.out.println(name.getClass());
例
内部クラスが動作しているクラスのシリアル化/逆シリアル化の例を見てみましょう。名前の付いたJavaクラスファイルを作成しますGsonTester C:\> GSON_WORKSPACEで。
File − GsonTester.java
import com.google.gson.Gson;
public class GsonTester {
public static void main(String args[]) {
Student student = new Student();
student.setRollNo(1);
Student.Name name = student.new Name();
name.firstName = "Mahesh";
name.lastName = "Kumar";
student.setName(name);
Gson gson = new Gson();
String jsonString = gson.toJson(student);
System.out.println(jsonString);
student = gson.fromJson(jsonString, Student.class);
System.out.println("Roll No: "+ student.getRollNo());
System.out.println("First Name: "+ student.getName().firstName);
System.out.println("Last Name: "+ student.getName().lastName);
String nameString = gson.toJson(name);
System.out.println(nameString);
name = gson.fromJson(nameString,Student.Name.class);
System.out.println(name.getClass());
System.out.println("First Name: "+ name.firstName);
System.out.println("Last Name: "+ name.lastName);
}
}
class Student {
private int rollNo;
private Name name;
public int getRollNo() {
return rollNo;
}
public void setRollNo(int rollNo) {
this.rollNo = rollNo;
}
public Name getName() {
return name;
}
public void setName(Name name) {
this.name = name;
}
class Name {
public String firstName;
public String lastName;
}
}
結果を確認する
を使用してクラスをコンパイルします javac 次のようにコンパイラ-
C:\GSON_WORKSPACE>javac GsonTester.java
次に、GsonTesterを実行して結果を確認します-
C:\GSON_WORKSPACE>java GsonTester
出力を確認します。
{"rollNo":1,"name":{"firstName":"Mahesh","lastName":"Kumar"}}
Roll No: 1
First Name: Mahesh
Last Name: Kumar
{"firstName":"Mahesh","lastName":"Kumar"}
class Student$Name
First Name: Mahesh
Last Name: Kumar
ネストされた静的内部クラスの例
Student student = new Student();
student.setRollNo(1);
Student.Name name = new Student.Name();
name.firstName = "Mahesh";
name.lastName = "Kumar";
student.setName(name);
//serialize static inner class object
String nameString = gson.toJson(name);
System.out.println(nameString);
//deserialize static inner class object
name = gson.fromJson(nameString,Student.Name.class);
System.out.println(name.getClass());
例
静的内部クラスが動作しているクラスのシリアル化/逆シリアル化の例を見てみましょう。C:\> GSON_WORKSPACEにGsonTesterという名前のJavaクラスファイルを作成します。
File − GsonTester.java
import com.google.gson.Gson;
public class GsonTester {
public static void main(String args[]) {
Student student = new Student();
student.setRollNo(1);
Student.Name name = new Student.Name();
name.firstName = "Mahesh";
name.lastName = "Kumar";
student.setName(name);
Gson gson = new Gson();
String jsonString = gson.toJson(student);
System.out.println(jsonString);
student = gson.fromJson(jsonString, Student.class);
System.out.println("Roll No: "+ student.getRollNo());
System.out.println("First Name: "+ student.getName().firstName);
System.out.println("Last Name: "+ student.getName().lastName);
String nameString = gson.toJson(name);
System.out.println(nameString);
name = gson.fromJson(nameString,Student.Name.class);
System.out.println(name.getClass());
System.out.println("First Name: "+ name.firstName);
System.out.println("Last Name: "+ name.lastName);
}
}
class Student {
private int rollNo;
private Name name;
public int getRollNo() {
return rollNo;
}
public void setRollNo(int rollNo) {
this.rollNo = rollNo;
}
public Name getName() {
return name;
}
public void setName(Name name) {
this.name = name;
}
static class Name {
public String firstName;
public String lastName;
}
}
結果を確認する
を使用してクラスをコンパイルします javac 次のようにコンパイラ-
C:\GSON_WORKSPACE>javac GsonTester.java
今実行します GsonTester 結果を見るために-
C:\GSON_WORKSPACE>java GsonTester
出力を確認します。
{"rollNo":1,"name":{"firstName":"Mahesh","lastName":"Kumar"}}
Roll No: 1
First Name: Mahesh
Last Name: Kumar
{"firstName":"Mahesh","lastName":"Kumar"}
class Student$Name
First Name: Mahesh
Last Name: Kumar
Gsonは、組み込みのアダプターを使用してオブジェクトのシリアル化/逆シリアル化を実行します。また、カスタムアダプタもサポートしています。カスタムアダプタを作成する方法とその使用方法について説明しましょう。
カスタムアダプタを作成する
を拡張してカスタムアダプタを作成します TypeAdapterクラスとそれに渡すオブジェクトのタイプ。オーバーライドするread そして write カスタムの逆シリアル化とシリアル化をそれぞれ実行するメソッド。
class StudentAdapter extends TypeAdapter<Student> {
@Override
public Student read(JsonReader reader) throws IOException {
...
}
@Override
public void write(JsonWriter writer, Student student) throws IOException {
}
}
カスタムアダプタを登録する
GsonBuilderを使用してカスタムアダプタを登録し、を使用してGsonインスタンスを作成します GsonBuilder。
GsonBuilder builder = new GsonBuilder();
builder.registerTypeAdapter(Student.class, new StudentAdapter());
Gson gson = builder.create();
アダプターを使用する
Gsonは、カスタムアダプターを使用してJsonテキストをオブジェクトに変換します。
String jsonString = "{\"name\":\"Mahesh\", \"rollNo\":1}";
Student student = gson.fromJson(jsonString, Student.class);
System.out.println(student);
jsonString = gson.toJson(student);
System.out.println(jsonString);
例
動作中のカスタムタイプアダプタの例を見てみましょう。名前の付いたJavaクラスファイルを作成しますGsonTester C:\> GSON_WORKSPACEで。
File − GsonTester.java
import java.io.IOException;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.TypeAdapter;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonToken;
import com.google.gson.stream.JsonWriter;
public class GsonTester {
public static void main(String args[]) {
GsonBuilder builder = new GsonBuilder();
builder.registerTypeAdapter(Student.class, new StudentAdapter());
builder.setPrettyPrinting();
Gson gson = builder.create();
String jsonString = "{\"name\":\"Mahesh\", \"rollNo\":1}";
Student student = gson.fromJson(jsonString, Student.class);
System.out.println(student);
jsonString = gson.toJson(student);
System.out.println(jsonString);
}
}
class StudentAdapter extends TypeAdapter<Student> {
@Override
public Student read(JsonReader reader) throws IOException {
Student student = new Student();
reader.beginObject();
String fieldname = null;
while (reader.hasNext()) {
JsonToken token = reader.peek();
if (token.equals(JsonToken.NAME)) {
//get the current token
fieldname = reader.nextName();
}
if ("name".equals(fieldname)) {
//move to next token
token = reader.peek();
student.setName(reader.nextString());
}
if("rollNo".equals(fieldname)) {
//move to next token
token = reader.peek();
student.setRollNo(reader.nextInt());
}
}
reader.endObject();
return student;
}
@Override
public void write(JsonWriter writer, Student student) throws IOException {
writer.beginObject();
writer.name("name");
writer.value(student.getName());
writer.name("rollNo");
writer.value(student.getRollNo());
writer.endObject();
}
}
class Student {
private int rollNo;
private String name;
public int getRollNo() {
return rollNo;
}
public void setRollNo(int rollNo) {
this.rollNo = rollNo;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String toString() {
return "Student[ name = "+name+", roll no: "+rollNo+ "]";
}
}
結果を確認する
を使用してクラスをコンパイルします javac 次のようにコンパイラ-
C:\GSON_WORKSPACE>javac GsonTester.java
今実行します GsonTester 結果を見るために-
C:\GSON_WORKSPACE>java GsonTester
出力を確認します。
Student[ name = Mahesh, roll no: 1]
{
"name": "Mahesh",
"rollNo": 1
}
Gsonはデフォルトで、NULL値を無視して最適化されたJsonコンテンツを生成します。ただし、GsonBuilderは、を使用してJson出力にNULL値を表示するフラグを提供します。GsonBuilder.serializeNulls() 方法。
GsonBuilder builder = new GsonBuilder();
builder.serializeNulls();
Gson gson = builder.create();
serializeNulls呼び出しのない例
名前の付いたJavaクラスファイルを作成します GsonTester C:\> GSON_WORKSPACEで。
ファイル-GsonTester.java
import com.google.gson.Gson;
public class GsonTester {
public static void main(String args[]) {
Gson gson = new Gson();
Student student = new Student();
student.setRollNo(1);
String jsonString = gson.toJson(student);
System.out.println(jsonString);
student = gson.fromJson(jsonString, Student.class);
System.out.println(student);
}
}
class Student {
private int rollNo;
private String name;
public int getRollNo() {
return rollNo;
}
public void setRollNo(int rollNo) {
this.rollNo = rollNo;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String toString() {
return "Student[ name = "+name+", roll no: "+rollNo+ "]";
}
}
結果を確認する
を使用してクラスをコンパイルします javac 次のようにコンパイラ-
C:\GSON_WORKSPACE>javac GsonTester.java
次に、GsonTesterを実行して結果を確認します-
C:\GSON_WORKSPACE>java GsonTester
出力を確認します。
{"rollNo": 1}
Student[ name = null, roll no: 1]
serializeNulls呼び出しの例
C:\> GSON_WORKSPACEにGsonTesterという名前のJavaクラスファイルを作成します。
ファイル-GsonTester.java
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class GsonTester {
public static void main(String args[]) {
GsonBuilder builder = new GsonBuilder();
builder.serializeNulls();
builder.setPrettyPrinting();
Gson gson = builder.create();
Student student = new Student();
student.setRollNo(1);
String jsonString = gson.toJson(student);
System.out.println(jsonString);
student = gson.fromJson(jsonString, Student.class);
System.out.println(student);
}
}
class Student {
private int rollNo;
private String name;
public int getRollNo() {
return rollNo;
}
public void setRollNo(int rollNo) {
this.rollNo = rollNo;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String toString() {
return "Student[ name = "+name+", roll no: "+rollNo+ "]";
}
}
結果を確認する
を使用してクラスをコンパイルします javac 次のようにコンパイラ-
C:\GSON_WORKSPACE>javac GsonTester.java
今実行します GsonTester 結果を見るために-
C:\GSON_WORKSPACE>java GsonTester
出力を確認します。
{
"rollNo": 1,
"name": null
}
Student[ name = null, roll no: 1]
Gsonは提供します @Sinceさまざまなバージョンに基づいてクラスのJsonシリアル化/逆シリアル化を制御するためのアノテーション。バージョン管理をサポートする次のクラスを検討してください。このクラスでは、最初に2つの変数を定義しましたrollNo そして name その後、追加しました verified新しい変数として。@Sinceを使用して、rollNo そして name バージョン1.0以降、バージョン1.1であることが確認されています。
class Student {
@Since(1.0)
private int rollNo;
@Since(1.0)
private String name;
@Since(1.1)
private boolean verified;
}
GsonBuilderは setVersion() そのようなバージョン管理されたクラスをシリアル化するメソッド。
GsonBuilder builder = new GsonBuilder();
builder.setVersion(1.0);
Gson gson = builder.create();
例
実際のバージョン管理サポートの例を見てみましょう。名前の付いたJavaクラスファイルを作成しますGsonTester C:\> GSON_WORKSPACEで。
ファイル-GsonTester.java
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.annotations.Since;
public class GsonTester {
public static void main(String args[]) {
GsonBuilder builder = new GsonBuilder();
builder.setVersion(1.0);
Gson gson = builder.create();
Student student = new Student();
student.setRollNo(1);
student.setName("Mahesh Kumar");
student.setVerified(true);
String jsonString = gson.toJson(student);
System.out.println(jsonString);
gson = new Gson();
jsonString = gson.toJson(student);
System.out.println(jsonString);
}
}
class Student {
@Since(1.0)
private int rollNo;
@Since(1.0)
private String name;
@Since(1.1)
private boolean verified;
public int getRollNo() {
return rollNo;
}
public void setRollNo(int rollNo) {
this.rollNo = rollNo;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void setVerified(boolean verified) {
this.verified = verified;
}
public boolean isVerified() {
return verified;
}
}
結果を確認する
を使用してクラスをコンパイルします javac 次のようにコンパイラ-
C:\GSON_WORKSPACE>javac GsonTester.java
次に、GsonTesterを実行して結果を確認します-
C:\GSON_WORKSPACE>java GsonTester
出力を確認します。
{"rollNo":1,"name":"Mahesh Kumar"}
{"rollNo":1,"name":"Mahesh Kumar","verified":true}
デフォルトでは、GSONはシリアル化/逆シリアル化プロセスから一時フィールドと静的フィールドを除外します。次の例を見てみましょう。
例
名前の付いたJavaクラスファイルを作成します GsonTester C:\> GSON_WORKSPACEで。
File − GsonTester.java
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class GsonTester {
public static void main(String args[]) {
GsonBuilder builder = new GsonBuilder();
Gson gson = builder.create();
Student student = new Student();
student.setRollNo(1);
student.setName("Mahesh Kumar");
student.setVerified(true);
student.setId(1);
student.className = "VI";
String jsonString = gson.toJson(student);
System.out.println(jsonString);
}
}
class Student {
private int rollNo;
private String name;
private boolean verified;
private transient int id;
public static String className;
public int getRollNo() {
return rollNo;
}
public void setRollNo(int rollNo) {
this.rollNo = rollNo;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void setVerified(boolean verified) {
this.verified = verified;
}
public boolean isVerified() {
return verified;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
結果を確認する
を使用してクラスをコンパイルします javac 次のようにコンパイラ-
C:\GSON_WORKSPACE>javac GsonTester.java
今実行します GsonTester 結果を見るために-
C:\GSON_WORKSPACE>java GsonTester
出力を確認します
{"rollNo":1,"name":"Mahesh Kumar","verified":true}
excludeFieldsWithModifiersの使用
GsonBuilderは、シリアル化/逆シリアル化プロセスからexcludeFieldsWithModifiers()メソッドを使用して、特定の修飾子を持つフィールドを除外するための制御を提供します。次の例を参照してください。
例
C:\> GSON_WORKSPACEにGsonTesterという名前のJavaクラスファイルを作成します。
File − GsonTester.java
import java.lang.reflect.Modifier;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class GsonTester {
public static void main(String args[]) {
GsonBuilder builder = new GsonBuilder();
builder.excludeFieldsWithModifiers(Modifier.TRANSIENT);
Gson gson = builder.create();
Student student = new Student();
student.setRollNo(1);
student.setName("Mahesh Kumar");
student.setVerified(true);
student.setId(1);
student.className = "VI";
String jsonString = gson.toJson(student);
System.out.println(jsonString);
}
}
class Student {
private int rollNo;
private String name;
private boolean verified;
private transient int id;
public static String className;
public int getRollNo() {
return rollNo;
}
public void setRollNo(int rollNo) {
this.rollNo = rollNo;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void setVerified(boolean verified) {
this.verified = verified;
}
public boolean isVerified() {
return verified;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
結果を確認する
を使用してクラスをコンパイルします javac 次のようにコンパイラ-
C:\GSON_WORKSPACE>javac GsonTester.java
今実行します GsonTester 結果を見るために-
C:\GSON_WORKSPACE>java GsonTester
出力を確認します
{"rollNo":1,"name":"Mahesh Kumar","verified":true,"className":"VI"}
@Exposeアノテーションの使用
Gsonは提供します @Exposeスコープに基づいてクラスのJsonシリアル化/逆シリアル化を制御するためのアノテーション。変数を持つ次のクラスを考えてみましょう。@Exposeサポート。このクラスでは、name そして rollno変数はシリアル化のために公開されます。次に、GsonBuilder.excludeFieldsWithoutExposeAnnotation()公開された変数のみがシリアル化/逆シリアル化されることを示すメソッド。次の例を参照してください。
例
名前の付いたJavaクラスファイルを作成します GsonTester C:\> GSON_WORKSPACEで。
File − GsonTester.java
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.annotations.Expose;
public class GsonTester {
public static void main(String args[]) {
GsonBuilder builder = new GsonBuilder();
builder.excludeFieldsWithoutExposeAnnotation();
Gson gson = builder.create();
Student student = new Student();
student.setRollNo(1);
student.setName("Mahesh Kumar");
student.setVerified(true);
student.setId(1);
student.className = "VI";
String jsonString = gson.toJson(student);
System.out.println(jsonString);
}
}
class Student {
@Expose
private int rollNo;
@Expose
private String name;
private boolean verified;
private int id;
public static String className;
public int getRollNo() {
return rollNo;
}
public void setRollNo(int rollNo) {
this.rollNo = rollNo;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void setVerified(boolean verified) {
this.verified = verified;
}
public boolean isVerified() {
return verified;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
結果を確認する
を使用してクラスをコンパイルします javac 次のようにコンパイラ-
C:\GSON_WORKSPACE>javac GsonTester.java
今実行します GsonTester 結果を見るために-
C:\GSON_WORKSPACE>java GsonTester
出力を確認します
{"rollNo":1,"name":"Mahesh Kumar"}