編輯:關於Android編程
(Serialization)
Gson gson = new Gson();
gson.toJson(1); ==> prints 1
gson.toJson(abcd); ==> prints abcd
gson.toJson(new Long(10)); ==> prints 10
int[] values = { 1 };
gson.toJson(values); ==> prints [1]
(Deserialization)
int one = gson.fromJson(1, int.class);
Integer one = gson.fromJson(1, Integer.class);
Long one = gson.fromJson(1, Long.class);
Boolean false = gson.fromJson(false, Boolean.class);
String str = gson.fromJson(abc, String.class);
String anotherStr = gson.fromJson([abc], String.class);
class BagOfPrimitives {
private int value1 = 1;
private String value2 = abc;
private transient int value3 = 3;
BagOfPrimitives() {
// no-args constructor
}
}
(Serialization)
BagOfPrimitives obj = new BagOfPrimitives();
Gson gson = new Gson();
String json = gson.toJson(obj);
==> json is {value1:1,value2:abc}
Note that you can not serialize objects with circular references since that will result in infinite recursion.
(Deserialization)
BagOfPrimitives obj2 = gson.fromJson(json, BagOfPrimitives.class);
==> obj2 is just like obj
Gson gson = new Gson();
int[] ints = {1, 2, 3, 4, 5};
String[] strings = {abc, def, ghi};
(Serialization)
gson.toJson(ints); ==> prints [1,2,3,4,5]
gson.toJson(strings); ==> prints [abc, def, ghi]
(Deserialization)
int[] ints2 = gson.fromJson([1,2,3,4,5], int[].class);
Gson gson = new Gson(); Collectionints = Lists.immutableList(1,2,3,4,5); (Serialization) String json = gson.toJson(ints); ==> json is [1,2,3,4,5] (Deserialization) Type collectionType = new TypeToken >(){}.getType(); Collection ints2 = gson.fromJson(json, collectionType);
Type fooType = new TypeToken>() {}.getType(); gson.toJson(foo, fooType); gson.fromJson(json, fooType);
['hello',5,{name:'GREETINGS',source:'guest'}]
public class RawCollectionsExample {
static class Event {
private String name;
private String source;
private Event(String name, String source) {
this.name = name;
this.source = source;
}
@Override
public String toString() {
return String.format((name=%s, source=%s), name, source);
}
}
@SuppressWarnings({ unchecked, rawtypes })
public static void main(String[] args) {
Gson gson = new Gson();
Collection collection = new ArrayList();
collection.add(hello);
collection.add(5);
collection.add(new Event(GREETINGS, guest));
String json = gson.toJson(collection);
System.out.println(Using Gson.toJson() on a raw collection: + json);
JsonParser parser = new JsonParser();
JsonArray array = parser.parse(json).getAsJsonArray();
String message = gson.fromJson(array.get(0), String.class);
int number = gson.fromJson(array.get(1), int.class);
Event event = gson.fromJson(array.get(2), Event.class);
System.out.printf(Using Gson.fromJson() to get: %s, %d, %s, message, number, event);
}
}
Gson gson = new GsonBuilder().setPrettyPrinting().serialzeNulls().create();NOTE: when serializing nulls with Gson, it will add a JsonNull element to the JsonElement structure. Therefore, this object can be used in custom serialization/deserialization.
import java.lang.reflect.Modifier;
Gson gson = new GsonBuilder()
.excludeFieldsWithModifiers(Modifier.STATIC)
.create();
NOTE: you can use any number of the Modifier constants to excludeFieldsWithModifiers method. For example:
Gson gson = new GsonBuilder()
.excludeFieldsWithModifiers(Modifier.STATIC, Modifier.TRANSIENT, Modifier.VOLATILE)
.create();
不過有更好的形式可以采取@Expose注解:然後調用 new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create()創建Gson凡是被@Expose注解的域都會被包括,沒有被注解的都被忽略。
private class SomeObject {
@SerializedName(custom_naming) private final String someField;
private final String someOtherField;
public SomeObject(String a, String b) {
this.someField = a;
this.someOtherField = b;
}
}
SomeObject someObject = new SomeObject(first, second);
Gson gson = new GsonBuilder().setFieldNamingPolicy(FieldNamingPolicy.UPPER_CAMEL_CASE).create();
String jsonRepresentation = gson.toJson(someObject);
System.out.println(jsonRepresentation);
======== OUTPUT ========
{custom_naming:first,SomeOtherField:second}
第五部分:UI基本布局(LinearLayout、RelativeLayout、FrameLayout、TableLayout)
1.LinearLayout LinearLayout中有一個屬性是android:orientation,vertical是垂直排列,horizontal是水
React Native中加載指示器組件ActivityIndicator使用方法
這裡講一下React Native中的一個組件——ActivityIndicator,這是一個加載指示器,俗稱菊花,很常見的,效果如下所示:imp
深入Android Handler與線程間通信ITC的詳解
在《Android Handler之消息循環的深入解析》中談到了Handler是用於操作線程內部的消息隊列,所以Handler可以用來線程間通信ITC,這種方式更加安全和
Android Camera探究之路——起步
Android Camera探究之路——起步Camera在手機中有著舉足輕重的地位,不管是二維碼還是照片、識別,都離不開攝像頭,本文將對Andro