gson etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
gson etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

7 Ocak 2024 Pazar

GSON Kullanımı

Maven
Şu satırı dahil ederiz
<dependency>
    <groupId>com.google.code.gson</groupId>
    <artifactId>gson</artifactId>
    <version>2.8.9</version>
</dependency>
Gson Sınıfı
Gson Sınıfı toJson() ile nesneyi JSON String'e çevirir. fromJson() ile JSON String'den nesneye çevirir

@SerializedName Anotasyonu
@SerializedName Anotasyonu yazısına taşıdım

@Expose Anotasyonu
@Expose Anotasyonu yazısına taşıdım

@Since Anotasyonu
@Since Anotasyonu yazısına taşıdım

Gson @Since Anotasyonu - Specify Version Information For Fields

Örnek
Şöyle yaparız
import com.google.gson.annotations.Since;
import com.google.gson.annotations.Until;

public class Product {
    @Since(1.0)
    private String name;
    @Until(2.0)
    private double price;

    // getters and setters
}


10 Ocak 2020 Cuma

Gson JsonElement Sınıfı

isJsonNull metodu
Açıklaması şöyle.
provides check for verifying if this element represents a null value or not.
Örnek
Elimizde şöyle bir json olsun
{
  "Id": null,
  ...
}
Şöyle yaparız.
if (bodyObj.get("Id").isJsonNull()) {
    ...
}

20 Kasım 2019 Çarşamba

Gson @JsonAdapter Anotasyonu

Giriş
Genellikle TypeAdapter arayüzünden kalıtan ve kendimize mahsus JSON serialization ve deserialization yapabilmemizi sağlayan sınıfı belirtmek için kullanılır.

Örnek
Elimizde şöyle bir kod olsun.
public class User() {
    private String name;
    private String email;

    @JsonAdapter(AddressSerializer.class)
    private Address address;
    ...
}
Elimizde şöyle bir kod olsun.
public class AddressSerializer implements JsonSerializer<Address> {

  @Override
  public JsonElement serialize(Address src,Type typeOfSrc,JsonSerializationContext ctx) {
    JsonObject jsonAddress = new JsonObject();

    jsonAddress.addProperty("address_line1", src.getAddressLine1());
    jsonAddress.addProperty("address_line2", src.getAddressLine2());
    jsonAddress.addProperty("address_city", src.getCity());
    jsonAddress.addProperty("address_postalcode", src.getPostcode());

    return jsonAddress;
    }
}
Çıktı olarak şunu alırız
{
  "name": "ana",
  "email": "test@test.co.uk",
  "address": {
    "address_line1": "123 Some Address",
    "address_line2": "",
    "address_city": "My city",
    "address_postalcode": "CV31 9GP"
  }
}

19 Ağustos 2019 Pazartesi

Gson Gson Sınıfı

Giriş
Şu satırı dahil ederiz.
import com.google.gson.Gson;
Açıklaması şöyle
For small to medium-sized JSON datasets, developers can consider using the GSON library for processing JSON data. GSON is lightweight and provides a simple API for mapping JSON data to Java objects. However, it is not suitable for processing large JSON datasets.
constructor
Şöyle yaparız.
Gson gson = new Gson();
fromJson medou
İmzası şöyle
ublic <T> T fromJson(JsonElement json, Class<T> classOfT)
public <T> T fromJson(JsonElement json, Type typeOfT)
public <T> T fromJson(JsonElement json, TypeToken<T> typeOfT)

public <T> T fromJson(JsonReader reader, Type typeOfT) 
public <T> T fromJson(JsonReader reader, TypeToken<T> typeOfT) 

public <T> T fromJson(Reader json, Class<T> classOfT) 
public <T> T fromJson(Reader json, Type typeOfT) 
public <T> T fromJson(Reader json, TypeToken<T> typeOfT)

public <T> T fromJson(String json, Class<T> classOfT)
public <T> T fromJson(String json, Type typeOfT)
public <T> T fromJson(String json, TypeToken<T> typeOfT)
fromJson metodu - JsonReader + type
Açıklaması şöyle. JsonElement tüm hiyerarşini atası. Bu sınıftan kalıtan iki önemli sınıf daha var. Bunlar JsonObject ve JsonArray. Çoğu kodda hiçbir zaman bu detayla uğraşılmaz ve direkt belirtilen type tipinden nesne elde edilir.
Whenever we parse a JSON string, the object that we get is of type JsonElement. JsonElement in GSON is similar to the object class in Java, which is the superclass of all JSON.
Örnek
Şöyle yaparız.
T t = ...;
JsonReader reader = ...;
T cse = (T) gson.fromJson(reader, t.getClass());
fromJson metodu - Reader + type
Örnek
Şöyle yaparız
Gson gson = new Gson();
FileReader reader = new FileReader("data.json");
BookList bookList = gson.fromJson(reader, BookList.class);

class Book {
   ...
}

class BookList {
  private final List<Book> books;

  BookList(List<Book> books) {
    this.books = books;
  }

  public List<Book> getBooks() {
     return books;
  }
}
fromJson metodu - string  + type
Örnek
Şöyle yaparız.
String str = ...;
Foo foo = gson.fromJson(str, Foo.class);
Örnek
Şöyle yaparız.
String str ="{\"Welcome\":1,\"Hi\":2,\"Hello\":1,\"Jin\":1}"; 
JsonElement jsonElement = gson.fromJson(str, JsonElement.class);
JsonObject jsonObject = jsonElement.getAsJsonObject();
Örnek
Şöyle yaparız.
JsonObject obj = gson.fromJson("{id:12345,    active:1}", JsonObject.class);
fromJson - string + TypeToken
Açıklaması şöyle.
Forces clients to create a subclass of this class which enables retrieval the type information even at runtime.
Bu metod Jackson'daki ObjectMapper.readValue() metodunun TypeReference parametresi alan şu koda benzetiyorum.
String responseString = ...;
Map<String, Object> map = new HashMap<String, Object>();
ObjectMapper mapper = new ObjectMapper();

map = mapper.readValue(responseString, new TypeReference<Map<String, String>>(){});
Örnek
Şöyle yaparız.
new Gson().fromJson(json, new TypeToken<List<User>>(){}.getType())
Örnek
Şöyle yaparız
Gson g = new Gson();
Type mapType = new TypeToken<Map<String, Object>>(){}.getType();
Map<String, Object> firstMap = g.fromJson( json, mapType);
toJson - object
Örnek
Şöyle yaparız.
Foo foo = ...;
Gson gson = new Gson();
String str = gson.toJson(foo);
Örnek
Şöyle yaparız.
// GSON library for JSON
@Override
public String toString(){
  return new com.google.gson.Gson().toJson(this);
}
toJson metodu - object + class
Örnek
Şöyle yaparız
System.out.println(new Gson().toJson(map1, HashMap.class));
toJson metodu - object + Appendable
void döner. Şöyle yaparız.
String str = ...
PrintWriter pw = ...;
gson.toJson (str, pw);