編輯:關於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}
1.LinearLayout LinearLayout中有一個屬性是android:orientation,vertical是垂直排列,horizontal是水
這裡講一下React Native中的一個組件——ActivityIndicator,這是一個加載指示器,俗稱菊花,很常見的,效果如下所示:imp
在《Android Handler之消息循環的深入解析》中談到了Handler是用於操作線程內部的消息隊列,所以Handler可以用來線程間通信ITC,這種方式更加安全和
Android Camera探究之路——起步Camera在手機中有著舉足輕重的地位,不管是二維碼還是照片、識別,都離不開攝像頭,本文將對Andro