json数据格式和object对象之间相互转换

来源:互联网 发布:分时博弈指标源码 编辑:程序博客网 时间:2024/05/22 01:53

android在与后台交互的时候经常需要解析数据和封装数据,本文讲述json数据解析为对象的过程和对象被封装为json数据的过程:

Object------------>json:

主要通过google提供Gson方法:

在使用Gson的时候还需要导入一个jar包

// 把对象转换成json数据private String initJsons() {String result = "";List<Persion> list = new ArrayList<Persion>();for (int i = 0; i < 5; i++) {Persion persion = new Persion();persion.setUsername("ii" + i);persion.setPassword("pp" + i);persion.setId(i);list.add(persion);}Gson gson = new Gson();result = gson.toJson(list);return result;}private String initJson() {String result = "";Persion persion = new Persion();persion.setUsername("111");persion.setPassword("222");persion.setId(1);Gson gson = new Gson();result = gson.toJson(persion);return result;}
json-------------->Object:

主要通过反射方式:

// 把json数据转换成对象private Object initObject(@SuppressWarnings("rawtypes") Class cls,String json) throws InstantiationException, IllegalAccessException,JSONException {Object obj = cls.newInstance();JSONObject jsonObject = new JSONObject(json);Field[] fields = cls.getDeclaredFields();AccessibleObject.setAccessible(fields, true);for (Field field : fields) {String name = field.getName();String fieldType = field.getType().getSimpleName();if (!jsonObject.has(name)) {continue;}if ("String".equals(fieldType)) {field.set(obj, jsonObject.getString(name));} else if ("int".equals(fieldType)) {field.set(obj, jsonObject.getInt(name));} else if ("double".equals(fieldType)) {field.set(obj, jsonObject.getDouble(name));} else if ("boolean".equals(fieldType)) {field.set(obj, jsonObject.getBoolean(name));}}return obj;}


0 0
原创粉丝点击