您的位置:首页 > 移动开发 > Objective-C

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

2013-12-19 15:00 956 查看
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: