Android解析JSON数据
来源:互联网 发布:mac如何画泳道图 编辑:程序博客网 时间:2024/05/22 03:27
在客户端与服务器通信中,服务器下发的数据一般为JSON或XML格式(Json居多),客户端要解析对应的数据,显示到UI或保存数据。
如果不了解JSON数据请查看百度JSON
本文主要讲解如何解析JSON,关于请求服务器下发数据等请读者自行查阅相关资料
- 解析简单JSON
首先我们来看一段JSON数据如下:
{ "age": 22, "name": "wuxiaoqi", "sex": "男"}
很简单的一段JSON数据,age对应年龄,name对应姓名,sex对应性别。
JSON数据中以key:value键值对形式保存数据,如age,name,sex都是key,冒号后对应value值,在JSON中{}对应JSONObject。
下面给出代码来解析上述JSON数据
String json = "{\n" + " \"age\": 22,\n" + " \"name\": \"wuxiaoqi\",\n" + " \"sex\": \"男\"\n" + "}";try { JSONObject jsonObject = new JSONObject(json); int age = jsonObject.getInt("age"); String name = jsonObject.getString("name"); String sex = jsonObject.getString("sex"); Log.i(TAG, "age:" + age + ",name:" + name + ",sex:" + sex); } catch (JSONException e) { e.printStackTrace(); }
运行程序,可以看到数据已经成功解析出来了,是不是很简单了
这里要注意下key:value中value带双引号为字符串类型,不带字符串为整型
如上述 **int age = jsonObject.getInt(“age”);**age为整型,所以要用getInt()方法解析,下图给出JSONObject中对应解析的方法:
- 解析复杂JSON
下面给出一段稍微复杂的JSON数据
{ "student": [ { "age": 22, "name": "wuxiaoqi", "sex": "男" }, { "age": 18, "name": "卡特A", "sex": "女" } ]}
上述JSON数据中多出了[],[]对应JSONArray,只要记住2点
1. {} 使用JSONObject解析 2. [] 使用JSONArray解析
解析代码如下:
String json = "{\n" + " \"student\": [\n" + " {\n" + " \"age\": 22,\n" + " \"name\": \"wuxiaoqi\",\n" + " \"sex\": \"男\"\n" + " },\n" + " {\n" + " \"age\": 18,\n" + " \"name\": \"卡特A\",\n" + " \"sex\": \"女\"\n" + " }\n" + " ]\n" + "}";try { JSONObject jsonObject = new JSONObject(json); JSONArray jsonArray = jsonObject.getJSONArray("student"); JSONObject j1 = jsonArray.getJSONObject(0); JSONObject j2 = jsonArray.getJSONObject(1); print(j1); print(j2); } catch (JSONException e) { e.printStackTrace(); }private void print(JSONObject jObject) throws JSONException { int age = jObject.getInt("age"); String name = jObject.getString("name"); String sex = jObject.getString("sex"); Log.i(TAG, "age:" + age + ",name:" + name + ",sex:" + sex); }
运行程序,可以看到已经成功解析出数据了
这里要注意下JSONArray是个数组,我们可以通过getJSONObject()方法获取对应下标的JSONObject,下标从0开始,这里给出JSONArray中对应的解析方法:
- 使用GSON解析JSON
如果JSON数据过于复杂,那么我们可以使用第三方库来方便解析JSON,这里我们使用了谷歌公司提供的库GSON
首先在build.gradle文件添加依赖
compile 'com.google.code.gson:gson:2.2.4'
首先新建一个model类对应我们的要解析的数据:
public class StudentModel { public int age; public String name; public String sex; @Override public String toString() { return "StudentModel{" + "age=" + age + ", name='" + name + '\'' + ", sex='" + sex + '\'' + '}'; }}
这里要注意下,属性名要于JSON数据中的key一一对应。
使用GSON解析代码如下:
String json = "{\n" + " \"age\": 22,\n" + " \"name\": \"wuxiaoqi\",\n" + " \"sex\": \"男\"\n" + "}";Gson gson = new Gson();StudentModel studentModel = gson.fromJson(json, StudentModel.class);Log.i(TAG, studentModel.toString());
可以看到我们代码只使用了gson.fromJson这句代码就把数据解析出来了,是不是很方便呢。
这里要注意下:
1. 因为model中的属性名要与JSON数据中key一一对应,那么打正式包的时候是不能混淆model类中属性名的,要在混淆文件中添加忽略。
2. 过于复杂的JSON数据要写对应的model类是不是太费劲了呢?在AndroidStudio中有这样一个插件GsonFormat:
3.
安装上这个插入就可以方便的生成对应model数据类:
- 在要生成的model数据类中按 Alt键+S键,会弹出GsonFormat弹窗
- 将JSON数据拷入,点击确定
- 勾选要生成的属性,默认全部勾选,点击确定完成。
到这里解析JSON数据就讲完了,有兴趣的同学可以在网上找些复杂的JSON数据来练习下解析JSON数据。
- android---Json数据解析
- Android Json 数据解析
- Android解析json数据
- android解析json数据
- Android-解析json数据
- Android Json数据解析
- Android解析JSON数据
- Android解析Json数据
- Android json数据解析
- android解析json数据
- android解析JSON数据
- Android解析json数据
- android Json数据解析
- android JSON数据解析
- Android 解析 Json 数据
- Android JSON数据解析
- Android JSON数据解析
- Android json数据解析
- Nginx 负载均衡配置
- Spark基础-Scala集合的操作
- 利用区块链技术解决传统物流贸易金融诸多痛点
- HDU 6126 Give out candies 最小割
- [cocos2d]cocos creator的常规用法
- Android解析JSON数据
- Leetcode 269. Alien Dictionary
- 赌博的乐趣-1
- da
- celery+django+redis异步处理邮件发送
- Java性能工具分析学习笔记
- CoreJava day 03
- 如何使用Fiddler调试线上JS代码(转自:http://www.cnblogs.com/RockLi/p/3511132.html)
- Fighting