Android 如何快速解析JSON字符串
来源:互联网 发布:超牛数据恢复注册码 编辑:程序博客网 时间:2024/06/06 00:11
了解Android的人都知道JSON,JSON是当前最最为通用的两种数据格式之一,对Android有一定了解的人都知道JSON,都知道如何解析JSON无非就是JSONObject和JSONArray两个类的API的使用,但是这样的话在解析较为复杂的JSON字符串的时候会耗费较多的时间,本文就是来讲解如何快速的去解析JSON字符串
接下来会向大家介绍两个东西:
gson框架和插件GsonFormat
gson架包下载地址:
http://download.csdn.net/detail/w18756901575/9521813
注:对NoHttp不了解的可以参考我的另一篇博客:
http://blog.csdn.net/w18756901575/article/details/51303356
当然也可以使用你自己习惯的网络请求方式
上代码:
package wkk.demo5;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import com.yolanda.nohttp.NoHttp;import com.yolanda.nohttp.OnResponseListener;import com.yolanda.nohttp.Request;import com.yolanda.nohttp.RequestMethod;import com.yolanda.nohttp.RequestQueue;import com.yolanda.nohttp.Response;import org.json.JSONObject;public class MainActivity extends AppCompatActivity { private String appkey = "006eb154538b436f875b462503de9d12"; private String url = "http://api.avatardata.cn/Joke/QueryJokeByTime"; public RequestQueue requestQueue; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); NoHttp.init(getApplication()); requestQueue = NoHttp.newRequestQueue(); Request<JSONObject> request = NoHttp.createJsonObjectRequest(url, RequestMethod.POST); request.add("key", appkey); request.add("time", "1418816972"); request.add("sort", "asc"); requestQueue.add(1, request, new OnResponseListener<JSONObject>() { @Override public void onStart(int what) { } @Override public void onSucceed(int what, Response<JSONObject> response) { JSONObject jsonObject = response.get(); Log.d("测试", jsonObject.toString()); } @Override public void onFailed(int what, String url, Object tag, Exception exception, int responseCode, long networkMillis) { Log.d("测试", exception.toString()); } @Override public void onFinish(int what) { } }); }}
好,得到数据之后对数据进行解析:
@Override public void onSucceed(int what, Response<JSONObject> response) { JSONObject jsonObject = response.get(); Log.d("测试", jsonObject.toString()); //首先创建一个Gson对象 Gson gson = new Gson(); //Gson类中有一个方法 fromJSon 参数分别为Json类型的字符串 还有T类型的.class //T是泛型 不明白的可以去百度一下 //此方法会返回一个T类型的值 T t = gson.fromJson(jsonObject.toString(), T.class); }
但是这个T类应该如何编写呢?
比较笨的写法Object对应类,Array对性集合,然后相同的变量名等等,比较麻烦,我们这里来使用GsonFormat这个插件来快速的编写Gson所需要的实体类
下载安装插件:
Android studio File→Settings..→Plugins→Browse repositores..搜索GsonFormat
然后下载安装,完成之后重启Android studio,我的是安装好的所以右侧界面会有所不同,
然后新建一个类,快捷键Alt+Insert
选择GsonFormat并将Json字符串粘贴进去
点击OK
这样就完成了实体类的编写了
然后解析:
@Override public void onSucceed(int what, Response<JSONObject> response) { JSONObject jsonObject = response.get(); Log.d("测试", jsonObject.toString()); //首先创建一个Gson对象 Gson gson = new Gson(); //Gson类中有一个方法 fromJSon 参数分别为Json类型的字符串 还有T类型的实体类.class //T是泛型 不明白的可以去百度一下 //此方法会返回一个T类型的值 JsonBean jsonBean = gson.fromJson(jsonObject.toString(), JsonBean.class); //这个jsonBean就是我们所需要的数据,里面的各个属性就对应Json字符串里面的各个字段 Log.d("测试", String.valueOf(jsonBean.getError_code())); Log.d("测试", jsonBean.getReason()); List<JsonBean.ResultBean> list= jsonBean.getResult(); for(JsonBean.ResultBean resultBean:list){ Log.d("测试",resultBean.getContent()); } }
Log如下:
怎么样,是不是很方便呢?
再多讲两句,有时候我们想要利用Gson来解析JSONArray,但是Gson只有解析JSONObject的方法,那怎么办呢?也不难,可以利用GsonFormat来将Array中的一个对象封装成一个实体类,然后for循环遍历JSONArray,将其中的每一个对象当做一个JSONObject来进行解析就行了
例如:
List<T> list1=new ArrayList<T>(); JSONArray jsonArray=new JSONArray(); for (int i=0;i<jsonArray.length();i++){ Gson gson1 = new Gson(); T t= gson1.fromJson(jsonArray.getString(i),T.class); list1.add(t); }
源码下载:
http://download.csdn.net/detail/w18756901575/9522271
- Android 如何快速解析JSON字符串
- android解析json字符串
- Android解析JSON字符串
- java 如何解析json字符串
- java如何解析json字符串
- android 快速实现json解析
- Java如何快速构造JSON字符串
- 通过Json和Gson,快速生成和解析json字符串
- android数据解析之json解析和json字符串创建
- Android解析Json字符串和生成json字符串
- Java如何将json格式字符串解析为json对象
- Android JSON字符串解析和构建
- Android JSON字符串解析和构建 .
- Android JSON字符串解析和构建
- android json解析带object的字符串
- Android初识-JSON字符串解析详解
- Android开发 Java解析Json字符串
- android 解析任意格式的json字符串
- 《Redis设计与实现》阅读:Redis底层研究之哈希表hashtable
- 获取音乐当前播放时间和总时长
- Python注释及中文注释
- NSTimeInterval转换为分钟秒
- java里 equals和== 区别
- Android 如何快速解析JSON字符串
- 【bzoj3878】【AHOI2014】【奇怪的计算器】【线段树】
- 修改slider图片
- 环境配置和导入工程等常见问题
- Rails (堆栈)<数据结构>
- NSURLSession学习笔记(二)Session Task
- IOS距离传感器
- iOS开发之--内购、GameCenter、iCloud、Passbook功能开发汇总
- 根据datatable获得列名