一、用Gson做节点解析
json:
{'flag':true,'data':{'name':'张三','age':18,'sex':true}}
步骤 :
-
获得 解析者
JsonParser parser = new JsonParser();
-
获得 根节点元素
JsonElement element = parser.parse(json);
-
根据 文档判断根节点属于 什么类型的 Gson节点对象
// 假如文档 显示 根节点 为对象类型 // 获得 根节点 的实际 节点类型 JsonObject root = element.getAsJsonObject();
-
取得 节点 下 的某个节点的 value
// 获得 flag 节点的值, flag 节点为基本数据节点 JsonPrimitive flagJson = root.getAsJsonPrimitive("flag"); // 基本节点取值 boolean flag = flagJson.getAsBoolean(); // 获得 data 节点的值,data 节点为Object数据节点 JsonObject dataJson = root.getAsJsonObject("data"); // 将节点上的数据转换为对象 Student stu = new Gson().fromJson(dataJson,Student.class);
完整代码
public static void main(String[] args) {
// json 节点解析
String json = "{'flag':true,'data':{'name':'张三','age':18,'sex':true}}";
// 1.获得 解析者
JsonParser parser = new JsonParser();
// 2.获得 根节点元素
JsonElement element = parser.parse(json);
// 3.根据 文档判断根节点属于 什么类型的 Gson节点对象
JsonObject root = element.getAsJsonObject();
// 4. 取得 节点 下 的某个节点的 value
JsonPrimitive flagJson = root.getAsJsonPrimitive("flag");
boolean flag = flagJson.getAsBoolean();
JsonObject dataJson = root.getAsJsonObject("data");
Student student = new Gson().fromJson(dataJson, Student.class);
System.out.println(flag);
System.out.println(student);
}
二、用fastjson做节点解析
案例1:
json字符串
[
{
"array": [
{
"salaryId": "297eb58f5a6029a1015a60460fb40096",
"salaryName": "劳动补助"
},
{
"salaryId": "8a28dd5b5653ed39015653eddf4e0002",
"salaryName": "基本工资"
},
{
"salaryId": "8a28dd5b5669a08301566eaddd1e0094",
"salaryName": "绩效工资"
}
],
"result_code": 0
}
]
解析方法
private List<SalaryTypeModel> parseTypeJson(String json) {
List<SalaryTypeModel> lists = new ArrayList<>();
JSONArray jsonArray = JSONArray.parseArray(json);
JSONObject jsonObject = jsonArray.getJSONObject(0);
JSONArray array = jsonObject.getJSONArray("array");
if (array.size() != 0) {
for (int i = 0; i < array.size(); i++) {
JSONObject type = array.getJSONObject(i);
SalaryTypeModel model = new SalaryTypeModel();
for (String key : type.keySet()) {
LogUtils.d(key + ", " + type.get(key));
model.setSalaryId(key);
model.setSalaryName((String) type.get(key));
}
lists.add(model);
}
}
return lists;
}
案例2:
json字符串
{
"array": [
{
"name": "系统管理员",
"releaseDate": "2016-10",
"其他补贴": 1,
"岗位津贴": 1,
"上下班交通补贴": 1,
"课时津贴": 1,
"薪级工资": 1,
"岗位工资": 1,
"超工作量津贴": 1,
"独生子女保健费": 1,
"粮油补贴": 1,
"salary_total": 9
}
],
"result_code": 0
}
解析方法
private Map<String, Object> parseJson(String json) {
Map<String, Object> maps = new HashMap<String, Object>();
JSONObject jsonObj = JSONObject.parseObject(json);
JSONArray jsonarray = jsonObj.getJSONArray("array");
if (jsonarray.size() != 0) {
JSONObject c = (JSONObject) jsonarray.get(0);
for (String key : c.keySet()) {
maps.put(key, c.get(key));
}
}
return maps;
}
三、用Android原生类解析
解析根节点为”[]”的json:
json字符串
[
{
"id": 1580615,
"name": "人人",
"packageName": "com.renren.mobile.android",
"iconUrl": "app/com.renren.mobile.android/icon.jpg",
"stars": 2,
"size": 21803987,
"downloadUrl": "app/com.renren.mobile.android/com.renren.mobile.android.apk",
"des": "2005-2014 你的校园一直在这儿。中国最大的实名制SNS网络平台,大学生"
},
{
"id": 1540629,
"name": "掌上营业厅",
"packageName": "com.ct.client",
"iconUrl": "app/com.ct.client/icon.jpg",
"stars": 2,
"size": 4794202,
"downloadUrl": "app/com.ct.client/com.ct.client.apk",
"des": "中国电信掌上营业厅是中国电信集团【官方】唯一指定服务全国电信用户的自助服务客户端"
}
]
解析方法
JSONArray jsonArray=new JSONArray(json);
for(int i=0;i<jsonArray.length();i++){
JSONObject object=jsonArray.getJSONObject(i);
String id=object.getString("id");
String name=object.getString("name");
String packageName=object.getString("packageName");
String iconUrl = object.getString("iconUrl");
double stars=Double.parseDouble(object.getString("stars"));
String size=object.getString("size");
String downloadUrl = object.getString("downloadUrl");
String des = object.getString("des");
//其他操作
....
}
解析根节点为”{}”的json:
json字符串
{
"id": 1525490,
"name": "有缘网",
"packageName": "com.youyuan.yyhl",
"iconUrl": "app/com.youyuan.yyhl/icon.jpg",
"stars": 4,
"size": 3876203,
"downloadUrl": "app/com.youyuan.yyhl/com.youyuan.yyhl.apk",
"des": "产品介绍:有缘是时下最受大众单身男女亲睐的婚恋交友软件。有缘网专注于通过轻松、"
}
解析方法
JSONObject object = new JSONObject(json);
long id = object.getLong("id");
String name = object.getString("name");
String packageName = object.getString("packageName");
String iconUrl = object.getString("iconUrl");
float stars = Float.parseFloat(object.getString("stars"));
long size = object.getLong("size");
String downloadUrl = object.getString("downloadUrl");
String des = object.getString("des");
网友评论