Постоянно сталкиваясь с парсингом Json всегда подглядываю в старых проектах или на встретившуюся реализацию объекта на stackoverflow.com.
Решил собрать три основных типа в шпаргалку Map, List, Array.
Рассматривается Serialization/Deserialization операции класса:
Serialization/Deserialization выполнен с использованием библиотеки Gson. В качестве «испытуемого» рассматривается класс GoodsItem.
HashMap
Результат Serialization:
Результат Deserialization:
ArrayList
Результат Serialization:
Результат Deserialization:
Array
Результат Serialization:
Результат Deserialization:
Как видно ArrayList и простой массив объектов преобразуются в одинаковую строку Json.
Полезные инструменты:
parcelabler.com дает возможность по типу класса сгенерировать parcelable методы для Android. Например для класса GoodsItem:
jsonschema2pojo.org — Generate Plain Old Java Objects from JSON or JSON-Schema.
Было бы интересно узнать, чем пользуетесь вы в своих проектах.
Решил собрать три основных типа в шпаргалку Map, List, Array.
Type itemsMapType = new TypeToken<Map<Integer, GoodsItem>>() {}.getType();
Type itemsListType = new TypeToken<List<GoodsItem>>() {}.getType();
Type itemsArrType = new TypeToken<GoodsItem[]>() {}.getType();
Рассматривается Serialization/Deserialization операции класса:
public class GoodsItem{
String name;
float price;
public GoodsItem(String name, float price) {
this.name = name;
this.price = price;
public String toString(){
return name + " : " + price;
}
}
Serialization/Deserialization выполнен с использованием библиотеки Gson. В качестве «испытуемого» рассматривается класс GoodsItem.
HashMap
Map<Integer, GoodsItem> mapItems = new HashMap<Integer, GoodsItem>();
mapItems.put(1, new GoodsItem("Samsung", 51200.6f));
mapItems.put(2, new GoodsItem("Lg", 5400.6f));
mapItems.put(3, new GoodsItem("Alcatel", 4500.6f));
String jsonStr = new Gson().toJson(mapItems);
System.out.println(jsonStr);
Результат Serialization:
{
"1":{"name":"Samsung","price":51200.6},
"2":{"name":"Lg","price":5400.6},
"3":{"name":"Alcatel","price":4500.6}
}
Map<Integer, GoodsItem> mapItemsDes = new Gson().fromJson(jsonStr, itemsMapType);
System.out.println(mapItemsDes.toString());
Результат Deserialization:
{1=Samsung : 51200.6, 2=Lg : 5400.6, 3=Alcatel : 4500.6}
ArrayList
List<GoodsItem> listItems = new ArrayList<GoodsItem>();
listItems.add( new GoodsItem("Samsung" , 51200.6f));
listItems.add( new GoodsItem("Lg" , 5400.6f));
listItems.add( new GoodsItem("Alcatel" , 4500.6f));
String jsonStr = new Gson().toJson(listItems);
System.out.println(jsonStr);
Результат Serialization:
[
{"name":"Samsung","price":51200.6},
{"name":"Lg","price":5400.6},
{"name":"Alcatel","price":4500.6}
]
List<GoodsItem> listItemsDes = new Gson().fromJson(jsonStr,itemsListType);
System.out.println(listItemsDes.toString());
Результат Deserialization:
[Samsung : 51200.6, Lg : 5400.6, Alcatel : 4500.6]
Array
GoodsItem[] arrItems = new GoodsItem[3];
arrItems[0] = new GoodsItem("Samsung", 51200.6f);
arrItems[1] = new GoodsItem("Lg", 5400.6f);
arrItems[2] = new GoodsItem("Alcatel", 4500.6f);
String jsonStr = new Gson().toJson(arrItems);
System.out.println(jsonStr);
Результат Serialization:
[
{"name":"Samsung","price":51200.6},
{"name":"Lg","price":5400.6},
{"name":"Alcatel","price":4500.6}
]
GoodsItem[] arrItemsDes = new Gson().fromJson(jsonStr, itemsArrType);
System.out.println(Arrays.toString(arrItemsDes));
Результат Deserialization:
[Samsung : 51200.6, Lg : 5400.6, Alcatel : 4500.6]
Как видно ArrayList и простой массив объектов преобразуются в одинаковую строку Json.
Полезные инструменты:
parcelabler.com дает возможность по типу класса сгенерировать parcelable методы для Android. Например для класса GoodsItem:
public class GoodsItem implements Parcelable
public class GoodsItem implements Parcelable {
String name;
float price;
public GoodsItem(String name, float price) {
this.name = name;
this.price = price;
public String toString(){
return name + " : " + price;
}
protected GoodsItem(Parcel in) {
name = in.readString();
price = in.readFloat();
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(name);
dest.writeFloat(price);
}
@SuppressWarnings("unused")
public static final Parcelable.Creator<GoodsItem> CREATOR = new Parcelable.Creator<GoodsItem>() {
@Override
public GoodsItem createFromParcel(Parcel in) {
return new GoodsItem(in);
}
@Override
public GoodsItem[] newArray(int size) {
return new GoodsItem[size];
}
};
}
jsonschema2pojo.org — Generate Plain Old Java Objects from JSON or JSON-Schema.
Было бы интересно узнать, чем пользуетесь вы в своих проектах.