Moshi Kütüphanesi tıpkı GSON kütüphanesi gibi, JSON Serialize/Deserialize işlemleri gerçekleştirebilen bir kütüphanedir.
Moshi kütüphanesini projemize dahil edelim;
implementation ‘com.squareup.moshi:moshi:1.9.2’
Örnek 1: İsimsiz JSON dizisi ile çalışmak;
deneme.json isminde bir dosya oluşturup içerisine aşağıdakileri ekleyip, FTP adresime yüklüyorum. Websiteniz yoksa github’a yükleyip, raw’ını açabilirsiniz.
[
{‘ad’: ‘ŞERİF’,’soyad’: ‘GÜNGÖR’},
{‘ad’: ‘KADİR’,’soyad’: ‘GÜNGÖR’}
]
Eğer websitem yok, webservis ile de uğraşmayalım diyorsanız, Bir string değişken oluşturup içerisine atıp deneme yapalım;
[{“ad”: “ŞERİF”,”soyad”: “GÜNGÖR”},{“ad”: “KADİR”,”soyad”: “GÜNGÖR”}]
String json = “[{\”ad\”: \”ŞERİF\”,\”soyad\”: \”GÜNGÖR\”},{\”ad\”: \”KADİR\”,\”soyad\”: \”GÜNGÖR\”}]”;
Projem içerisine Kisi.java dosyası oluşturuyorum;
import androidx.annotation.NonNull;
public class Kisi {
public String ad;
public String soyad;
@NonNull
@Override
public String toString() {
return ad+” “+soyad;
}
}
MainActivity.java dosyamıza 1 adet ListView ekliyorum tam sayfa genişliğinde, ismi listViewKisiler olsun.
MainActivity’nin son hali aşağıdaki gibidir;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import com.squareup.moshi.JsonAdapter;
import com.squareup.moshi.Moshi;
import com.squareup.moshi.Types;
import java.io.IOException;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
ListView listView;
ArrayAdapter<String> arrayAdapter;
String json = “[{\”ad\”: \”ŞERİF\”,\”soyad\”: \”GÜNGÖR\”},{\”ad\”: \”KADİR\”,\”soyad\”: \”GÜNGÖR\”}]”;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = findViewById(R.id.listViewKisiler);
Moshi moshi = new Moshi.Builder().build();
Type type = Types.newParameterizedType(List.class, Kisi.class);
JsonAdapter<List<Kisi>> adapter = moshi.adapter(type);
try {
List<Kisi> kisiler = adapter.fromJson(json);
arrayAdapter = new ArrayAdapter<String>(getApplicationContext(),android.R.layout.simple_list_item_1,(ArrayList)kisiler);
listView.setAdapter(arrayAdapter);
this.setTitle(“Toplam Kişi: “+kisiler.size());
} catch (IOException e) {
e.printStackTrace();
}
}
}
Moshi oldukça seri ve stabil çalışıyor, yine ilk defa kullandığım ve memnun kaldığım bir kütüphane 🙂
Örnek 2: Java tarafında Moshi ile JSON dizisi oluşturalım;
List<Map<String, String>> data = new ArrayList<>();
Map<String, String> item1 = new HashMap<>();
item1.put(“name”, “Google”);
item1.put(“url”, “https://google.com”);
data.add(item1);
Map<String, String> item2 = new HashMap<>();
item2.put(“name”, “LinkedIn”);
item2.put(“url”, “https://linkedin.com”);
data.add(item2);
Moshi moshi = new Moshi.Builder().build();
JsonAdapter<List> jsonAdapter = moshi.adapter(List.class);
String jsonStringFromObject = jsonAdapter.toJson(data);
Log.d(“JSON Çıktısı: “,jsonStringFromObject);
Örnek 3: İsimli JSON dizisi ile çalışmak:
Henüz bu kısmı bulamadım araştırmaya devam ediyorum…