一、什么是json

百度百科中对json的介绍是这样的:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成(网络传输速度快)。
在实际的开发中,我们通常使用json作为客户端与服务端的数据交换格式,所以我们必须了解json数据的解析方法,这里介绍三种解析json数据的方法,分别是Android系统自带的json解析、Google提供的Gson解析、阿里巴巴的fastjson解析。

二、使用上面三种方式解析json数据

先看我们要解析的json数据是什么样子的:
{    "cityList": [        {            "id": 1,            "name": "武汉市"        },        {            "id": 2,            "name": "襄阳市"        },        {            "id": 3,            "name": "随州市"        },        {            "id": 4,            "name": "宜昌市"        }    ],    "id": 1,    "name": "湖北省"}
很简单,就是一个省的数据,省中包括id、name、和市的集合,市中又包含了id和name属性,下面我们就用三种方式来解析,直接上代码:
package com.example.jsonparsetest;import java.util.ArrayList;import java.util.List;import org.json.JSONArray;import org.json.JSONObject;import android.app.Activity;import android.os.Bundle;import android.text.TextUtils;import android.view.View;import android.widget.TextView;import com.example.jsonparsetest.bean.City;import com.example.jsonparsetest.bean.Province;import com.example.jsonparsetest.utils.FileUtils;import com.google.gson.Gson;public class MainActivity extends Activity {private TextView textView;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);textView = (TextView) findViewById(R.id.content);}/**android自带的JSON解析*/public void btn1Click(View view) {//从assets目录中的province.txt文件中获取JSON字符串String json = FileUtils.getJSONStringFromFile(this);if(!TextUtils.isEmpty(json)){try {//将JSON字符串转化为JSON对象JSONObject obj = new JSONObject(json);Province province = new Province();//通过opt...方法,获取键对应的值province.setId(obj.optInt("id"));province.setName(obj.optString("name"));//得到一个JSON数组,数组里装的city的JSON数据JSONArray arr = obj.optJSONArray("cityList");if(arr != null && arr.length() > 0){List<City> cityList = new ArrayList<City>();//遍历JSON数组得到其中的city数据for(int i = 0; i < arr.length(); i++){JSONObject jobj = arr.getJSONObject(i);City city = new City();city.setId(jobj.optInt("id"));city.setName(jobj.optString("name"));cityList.add(city);}province.setCityList(cityList);}//把Province对象转化为String显示出来,注意这里的Province和City对象都必须复写了toString方法textView.append("使用Android自带的JSON解析,得出的结果为:\n" + province.toString());textView.append("\n----------------\n");} catch (Exception e) {e.printStackTrace();}}}/**Google的gson解析*/public void btn2Click(View view) {String json = FileUtils.getJSONStringFromFile(this);if(!TextUtils.isEmpty(json)){//新建一个Gson对象Gson gson = new Gson();//fromJson方法可以把一个json字符串直接转化为对应的对象Province province = gson.fromJson(json, Province.class);textView.append("使用Google的GSON解析,得出的结果为:\n" + province.toString());textView.append("\n----------------\n");}}/**阿里的fastjson解析*/public void btn3Click(View view) {String json = FileUtils.getJSONStringFromFile(this);if(!TextUtils.isEmpty(json)){//parseObject方法和上面的fromJson方法类似,也可以直接将一个json字符串转化为对应的对象Province pro = com.alibaba.fastjson.JSON.parseObject(json, Province.class);textView.append("使用阿里的fastjson解析,得出的结果为:\n" + pro.toString());textView.append("\n----------------\n");}}}

运行时截图如下:

上面的代码只是介绍了解析json字符串为Java对象的方法,还有从Java对象转化为json字符串的方法,具体使用也比较简单,这里就不介绍了。另外需要说明的是,在使用Google的gson解析时,需要用到gson的jar包,使用阿里巴巴的fastjson解析时,也需要对应的jar包,源码在这里下载,包括代码和需要的jar包: 点击下载

更多相关文章

  1. SpringBoot 2.0 中 HikariCP 数据库连接池原理解析
  2. android 源码 来电流程 详解
  3. Android(安卓)Application 和Webview 之间的交互
  4. EventBus的简单用法及介绍
  5. windowIsTranslucent和windowBackground对比
  6. android 4.0 全屏 屏蔽下面的status bar
  7. android中的service
  8. 【Android】MediaPlayer使用方法简单介绍
  9. Android(安卓)L Settings实现

随机推荐

  1. android设置一个通用的控件,比如返回按钮
  2. Android:ImageView如何显示网络图片
  3. android:imeOptions
  4. Android中的GridView详解
  5. android教程资源 免费android深入浅出课
  6. android小游戏 猜拳游戏设计
  7. Android(安卓)汉字转拼音
  8. android Alertdialog.Bulider简单使用
  9. Android(安卓)在 xml中定义图片
  10. Android(安卓)Webkit 解读 WebKit – Web