博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用Gson、FastJson、Android原生类三种方式做Json节点解析
阅读量:4122 次
发布时间:2019-05-25

本文共 4711 字,大约阅读时间需要 15 分钟。

一、用Gson做节点解析

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

    // 获得 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
parseTypeJson(String json) { List
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
parseJson(String json) { Map
maps = new HashMap
(); 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

解析根节点为”{}”的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");

转载地址:http://uvvpi.baihongyu.com/

你可能感兴趣的文章
C语言-static和extern关键字1-对函数的作用
查看>>
C 语言-static和extern关键字2-对变量的作用
查看>>
【JavaScript 教程】浏览器—History 对象
查看>>
还不会正则表达式?看这篇!
查看>>
100道+ JavaScript 面试题,助你查漏补缺
查看>>
JavaScript深入理解之闭包
查看>>
这才是学习Vite2的正确姿势!
查看>>
7 个适用于所有前端开发人员的很棒API,你需要了解一下
查看>>
25个构建Web项目的HTML建议,你需要了解一下!
查看>>
【web素材】02-10款大气的购物商城网站模板
查看>>
6种方式实现JavaScript数组扁平化(flat)方法的总结
查看>>
如何实现a===1 && a===2 && a===3返回true?
查看>>
49个在工作中常用且容易遗忘的CSS样式清单整理
查看>>
20种在学习编程的同时也可以在线赚钱的方法
查看>>
隐藏搜索框:CSS 动画正反向序列
查看>>
12 个JavaScript 特性技巧你可能从未使用过
查看>>
127个超级实用的JavaScript 代码片段,你千万要收藏好(上)
查看>>
【视频教程】Javascript ES6 教程27—ES6 构建一个Promise
查看>>
【5分钟代码练习】01—导航栏鼠标悬停效果的实现
查看>>
127个超级实用的JavaScript 代码片段,你千万要收藏好(中)
查看>>