安卓 三种方式解析json
来源:互联网 发布:淘宝网商贷款逾期了1天 编辑:程序博客网 时间:2024/06/03 17:21
今天研究了下解析服务器上的json文件
先给大家看一下服务器上的json文件里面的内容
{"list":2,"persons":[{"pid":1,"pname":"傻逼","page":22},{"pid":2,"pname":"鬼子","page":22},{"pid":3,"pname":"傻逼2","page":22}]}
就是这么点数据,但是通过json解析,可以以对象的方式得到它
接下来就直接给大家看代码了
xml里面的代码其实也没什么,就是一个Button里面带有一个点击事件,那就直接上Java代码了
package com.liuqian.android_30parsejson;import android.os.AsyncTask;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.View;import com.alibaba.fastjson.JSON;import com.google.gson.Gson;import org.json.JSONArray;import org.json.JSONObject;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.net.HttpURLConnection;import java.net.MalformedURLException;import java.net.URL;import java.util.List;public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void parserJson(View view){ //获取网络Json new MyTask().execute(); } class MyTask extends AsyncTask{ @Override protected Object doInBackground(Object[] params) { try { URL url=new URL(getString(R.string.server_name)+"persons.json"); HttpURLConnection httpURLConnection= (HttpURLConnection) url.openConnection(); //设置请求方式 httpURLConnection.setRequestMethod("GET"); httpURLConnection.setConnectTimeout(5000); //获取结果码 int code=httpURLConnection.getResponseCode(); Log.i("test",code+""); if(code==200){//响应成功 InputStream is=httpURLConnection.getInputStream(); BufferedReader br=new BufferedReader(new InputStreamReader(is)); String str=null; StringBuffer stringBuffer=new StringBuffer(); while ((str=br.readLine())!=null){ stringBuffer.append(str); Log.i("test",stringBuffer.toString()); } //解析json /*//01开始使用原生态 JSONObject jsonObject=new JSONObject(stringBuffer.toString()); int list=jsonObject.getInt("list"); Log.i("test","长度"+list); JSONArray jsonArray=new JSONArray("persons"); for (int i = 0; i <jsonArray.length() ; i++) { JSONObject object=jsonArray.getJSONObject(i); int pid=object.getInt("pid"); String pname=object.getString("pname"); int page=object.getInt("page"); Log.i("test",pid+pname+page); }*/ //2.使用gson解析json /* Gson gson=new Gson(); BigPerson bigPerson=gson.fromJson(stringBuffer.toString(),BigPerson.class); Log.i("test",bigPerson.getList()+""); List<SmallPerson> persons=bigPerson.getPersons(); for (SmallPerson person:persons) { Log.i("test",person.toString()); }*/ //3.使用FastJson解析 BigPerson bigPerson= JSON.parseObject(stringBuffer.toString(),BigPerson.class); Log.i("test",bigPerson.getList()+""); List<SmallPerson> persons=bigPerson.getPersons(); for (SmallPerson person:persons) { Log.i("test",person.toString()); } } } catch (Exception e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(Object o) { super.onPostExecute(o); } }}
三种方法都在里面,但是还需要在manifest里面加一个网络的权限
而且需要注意的是,展示数据只能在OnPostExecute这个方法里面,因为存入数据的集合只有在此方法中才有效
今天本人的分享也就到这里了,如有失误,请指正,本人虚心接受,谢谢!!
0 0
- 安卓 三种方式解析json
- 安卓 三种方式解析xml
- 浅淡安卓json的三种解析
- Andorid解析json的三种方式
- JSON的三种解析方式
- JSON解析的三种方式
- Android---JSON的三种解析方式
- 解析JSON的三种方式
- JSON的三种解析方式
- Android解析Json三种方式
- Android:解析JSON的三种方式
- JSON的三种解析方式
- Json解析的三种方式
- Json解析的三种方式
- JSON解析的三种方式
- JSON的三种解析方式
- JSON 的三种解析方式
- JSON的三种解析方式
- spring安全框架系列springSecurity
- 领域驱动设计(DDD:Domain-Driven Design)
- 记录Google实习面试结束
- SSM--环境搭建
- python笔记(基础知识)
- 安卓 三种方式解析json
- 面向对象
- spring定时器
- 命令查询职责分离(CQRS)模式
- var oEvent=ev||event;何时使用
- Invalid bound statement (not found)
- Scikit-learn提供的例子介绍几种常用的特征选择
- 用ContentObserver内容观察者写了一个自动填写验证码
- Python数据抓取