序列化反序列化
来源:互联网 发布:mac 删除文件夹命令 编辑:程序博客网 时间:2024/04/29 04:04
编写反序列化Adapter
- import com.google.gson.*;
- import com.google.gson.JsonDeserializer;
- import java.lang.reflect.Type;
- import java.math.BigDecimal;
- import java.util.HashMap;
- import java.util.Map;
- /**
- * Created by IntelliJ IDEA.
- * User: chuang.liu
- * Date: 11-7-22
- * Time: 上午10:24
- * To change this template use File | Settings | File Templates.
- */
- publicclass NaturalDeserializerimplements JsonDeserializer<Object> {
- public Object deserialize(JsonElement json, Type typeOfT,
- JsonDeserializationContext context) {
- if(json.isJsonNull())returnnull;
- elseif(json.isJsonPrimitive())return handlePrimitive(json.getAsJsonPrimitive());
- elseif(json.isJsonArray())return handleArray(json.getAsJsonArray(), context);
- elsereturn handleObject(json.getAsJsonObject(), context);
- }
- private Object handlePrimitive(JsonPrimitive json) {
- if(json.isBoolean())
- return json.getAsBoolean();
- elseif(json.isString())
- return json.getAsString();
- else {
- BigDecimal bigDec = json.getAsBigDecimal();
- // Find out if it is an int type
- try {
- bigDec.toBigIntegerExact();
- try {return bigDec.intValueExact(); }
- catch(ArithmeticException e) {}
- return bigDec.longValue();
- } catch(ArithmeticException e) {}
- // Just return it as a double
- return bigDec.doubleValue();
- }
- }
- private Object handleArray(JsonArray json, JsonDeserializationContext context) {
- Object[] array = new Object[json.size()];
- for(int i =0; i < array.length; i++)
- array[i] = context.deserialize(json.get(i), Object.class);
- return array;
- }
- private Object handleObject(JsonObject json, JsonDeserializationContext context) {
- Map<String, Object> map = new HashMap<String, Object>();
- for(Map.Entry<String, JsonElement> entry : json.entrySet())
- map.put(entry.getKey(), context.deserialize(entry.getValue(), Object.class));
- return map;
- }
- }
- 在test类中调用测试下
- <pre class="java" name="code"></pre><preclass="java" name="code">import com.dev.core.user.model.User;
- import com.google.gson.*;
- import java.util.HashMap;
- import java.util.Map;
- /**
- * Created by IntelliJ IDEA.
- * User: chuang.liu
- * Date: 11-7-21
- * Time: 下午3:50
- * To change this template use File | Settings | File Templates.
- */
- publicclass test {
- privateint data;
- private Map<String,Object> mapData;
- publicvoid setData(int data){
- this.data =data;
- }
- publicint getData(){
- return data;
- }
- publicvoid setmapData(Map<String,Object> data){
- this.mapData =data;
- }
- public Map<String,Object> getmapData(){
- return mapData;
- }
- publicstaticvoid main(String arg[]){
- GsonBuilder gsonBuilder = new GsonBuilder();
- gsonBuilder.registerTypeAdapter(Object.class,new NaturalDeserializer());
- Gson gson = gsonBuilder.create();
- Map<String, Object> data = new HashMap<String, Object>();
- data.put("user",new User());
- data.put("url","http:///sina/verify?code=");
- test t =new test();
- t.setData(10);
- t.setmapData(data);
- String jstring = gson.toJson(t);
- test nt = gson.fromJson(jstring,test.class);
- System.out.println("done");
- }
- }
- </pre><br><br>
- 序列化反序列化
- 序列化 反序列化
- 序列化反序列化
- 序列化反序列化
- 序列化、反序列化
- 序列化、反序列化
- 序列化/反序列化
- 序列化/反序列化
- 序列化反序列化
- 序列化,反序列化
- 序列化,反序列化
- 序列和反序列化
- 万能序列,反序列化
- 序列和反序列化
- 序列化与反序列
- 序列化与反序列
- Hessian 序列化,反序列
- 序列化和反序列化
- Eclipse 生成android程序apk文件
- 年薪10万的乞丐给我上了震撼的一课
- stp生成树
- [开发工具]_[网络]_[取消fireforx火狐下载扫描功能]
- java的getClass()函数
- 序列化反序列化
- QCon杭州2012大会PPT下载——全球软件开发者大会(杭州站)
- 代理的备注
- 对自己的人生负责
- winform登录窗体实现记住密码功能
- Thinkphp的RBAC,基于角色的权限控制
- MFC自定义消息
- myeclipse 8.5优化
- Java 局部内部类访问局部变量必须加 final 关键字