Gson - Serileştirme Örnekleri
Bu bölümde, dizilerin, koleksiyonların ve jeneriklerin serileştirilmesi / serileştirilmesinin kaldırılmasını tartışacağız.
Dizi Örneği
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));
Misal
Dizi serileştirme / serileştirmeyi kaldırma eylemini görelim. Adlı bir Java sınıf dosyası oluşturunGsonTester C: \> GSON_WORKSPACE içinde.
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));
}
}
Sonucu doğrulayın
Kullanarak sınıfları derleyin javac aşağıdaki gibi derleyici -
C:\GSON_WORKSPACE>javac GsonTester.java
Şimdi sonucu görmek için GsonTester'ı çalıştırın -
C:\GSON_WORKSPACE>java GsonTester
Çıkışı doğrulayın.
{marks:[100,90,85],names:["Ram","Shyam","Mohan"]}
marks:[100, 90, 85]
names:[Ram, Shyam, Mohan]
Koleksiyonlar Örneği
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>
Misal
Koleksiyon serileştirme / serileştirmeyi kaldırma eylemini görelim. Adlı bir Java sınıf dosyası oluşturunGsonTester C: \> GSON_WORKSPACE içinde.
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);
}
}
Sonucu doğrulayın
Kullanarak sınıfları derleyin javac aşağıdaki gibi derleyici -
C:\GSON_WORKSPACE>javac GsonTester.java
Şimdi çalıştırın GsonTester sonucu görmek için -
C:\GSON_WORKSPACE>java GsonTester
Çıkışı doğrulayın.
{marks:[100,90,85]}
marks:[100, 90, 85]
Jenerik Örnek
Gson, bir Json metninin eşleneceği nesnenin türünü almak için Java yansıma API'sini kullanır. Ancak jeneriklerde bu bilgiler serileştirme sırasında kaybolur. Bu sorunu gidermek için Gson bir sınıf sağlarcom.google.gson.reflect.TypeToken genel nesnenin türünü depolamak için.
Misal
Jenerik serileştirme / serileştirmeyi kaldırma eylemini görelim. Adlı bir Java sınıf dosyası oluşturunGsonTester C: \> GSON_WORKSPACE içinde.
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);
}
}
Sonucu doğrulayın
Kullanarak sınıfları derleyin javac aşağıdaki gibi derleyici -
C:\GSON_WORKSPACE>javac GsonTester.java
Şimdi çalıştırın GsonTester sonucu görmek için -
C:\GSON_WORKSPACE>java GsonTester
Çıkışı doğrulayın.
{"shape":{"radius":5.0}}
class com.google.gson.internal.LinkedTreeMap
{radius = 5.0}
0.0
class Circle
Circle
78.5