import com.dslplatform.json.DslJson; //导入依赖的package包/类
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
DslJson dslJson = DSL.JSON();
//it's best to reuse writer if possible
//since only a single serialization in Android is done concurrently
//a good practice is to have a static field with a synchronized guard
JsonWriter writer = dslJson.newWriter();
ByteArrayOutputStream os = new ByteArrayOutputStream();
Model instance = new Model();
instance.number = 42;
instance.string = "Hello World!";
instance.integers = Arrays.asList(1, 2, 3);
instance.decimals = new HashSet(Arrays.asList(BigDecimal.ONE, BigDecimal.ZERO));
instance.uuids = new UUID[]{new UUID(1L, 2L), new UUID(3L, 4L)};
instance.longs = new Vector(Arrays.asList(1L, 2L));
instance.nested = Arrays.asList(new Model.Nested(), null);
instance.inheritance = new Model.ParentClass();
instance.inheritance.a = 5;
instance.inheritance.b = 6;
instance.person = new ImmutablePerson("first name", "last name", 35);
instance.states = Arrays.asList(Model.State.HI, Model.State.LOW);
instance.jsonObject = new Model.JsonObjectReference(43, "abcd");
instance.jsonObjects = Collections.singletonList(new Model.JsonObjectReference(34, "dcba"));
instance.date = new Date();
instance.dates = Arrays.asList(null, new Date(0));
Model.Concrete concrete = new Model.Concrete();
concrete.x = 11;
concrete.y = 23;
instance.abs = concrete;
instance.absList = Arrays.asList(concrete, null, concrete);
instance.decimal2 = BigDecimal.TEN;
instance.intList = new ArrayList(Arrays.asList(123, 456));
instance.map = new HashMap();
instance.map.put("abc", 678);
instance.map.put("array", new int[] { 2, 4, 8});
try {
//serialize into writer
dslJson.serialize(writer, instance);
//after serialization is done we can copy it into output stream
writer.toStream(os);
ByteArrayInputStream is = new ByteArrayInputStream(os.toByteArray());
//deserialized using stream API. temporary buffer is passes which should be reused if possible
Model deserialized = dslJson.deserialize(Model.class, is, new byte[1024]);
Toast.makeText(this, deserialized.string, Toast.LENGTH_LONG);
} catch (IOException ex) {
Toast.makeText(this, ex.getMessage(), Toast.LENGTH_LONG);
}
}