国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

Android解析JSON

2019-11-06 09:42:45
字體:
來源:轉載
供稿:網友

首先需要服務器端生成JSON 數(shù)據(jù),然后再到Android中解析

@RequestMapping("getJson.xhtml") public String getJson(HttpServletRequest request){ List<FQ> fqs = new ArrayList<FQ>(); for (int i = 1; i <= 100; i++) { Calendar calendar = Calendar.getInstance(); int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH); int day = calendar.get(Calendar.DAY_OF_MONTH); fqs.add(new FQ("LL" + i, "今天心情good"+i, year + "-" + month + "-" + day)); } //將對象集合轉為JSON JSONObject jsonObject = new JSONObject(); jsonObject.put("class", "996444703"); jsonObject.put("lists", fqs.size()); JSONArray jsonArray = new JSONArray(); for(FQ fq: fqs){ JSONObject object = new JSONObject(); object.put("name", fq.getName()); object.put("content", fq.getContent()); object.put("time", fq.getTime()); jsonArray.add(object); } jsonObject.put("fqs", jsonArray); request.setAttribute("fqs", jsonObject.toString()); return "dataResultJson"; }

這里可以使用@RequestBody注解方式快速轉換為JSON ,但是為了使用一下比較原始的方法。 dataResultJson.jsp

<%@ page language="java" contentType="text/plain; charset=UTF-8" pageEncoding="UTF-8"%>${fqs }

連上網絡然后瀏覽器查看生成的JSON 這里寫圖片描述

接下來安卓獲取數(shù)據(jù)并解析 上代碼 activity_get_json.xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:orientation="vertical" > <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="獲取Json" android:onClick="getJson" /> <ListView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/lv_json_list" > </ListView></LinearLayout>

還需要一個實體類于JSON 數(shù)據(jù)各種相對應

public class BigFQ { PRivate String clazz; private int lists; private List<FQ> fqs; public String getClazz() { return clazz; } public void setClazz(String clazz) { this.clazz = clazz; } public int getLists() { return lists; } public void setLists(int lists) { this.lists = lists; } public List<FQ> getFqs() { return fqs; } public void setFqs(List<FQ> fqs) { this.fqs = fqs; } public BigFQ() { } public BigFQ(String clazz, int lists, List<FQ> fqs) { this.clazz = clazz; this.lists = lists; this.fqs = fqs; }}

FQ

public class FQ { private String name; private String content; private String time; public FQ() { super(); } public FQ(String name, String content, String time) { super(); this.name = name; this.content = content; this.time = time; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } public String getTime() { return time; } public void setTime(String time) { this.time = time; }}public class ItemTag { public TextView tv_name; public TextView tv_content; public TextView tv_time;}

GetJsonActivity.java

public class GetJsonActivity extends AppCompatActivity { private ListView lv_json_list; private List<FQ> lists=new ArrayList<>(); private MyAdapter myAdapter; private ProgressDialog progressDialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_get_json); lv_json_list = (ListView) findViewById(R.id.lv_json_list); myAdapter = new MyAdapter(); lv_json_list.setAdapter(myAdapter); progressDialog = new ProgressDialog(this); progressDialog.setMessage("正在拼命loading中..."); } class MyAdapter extends BaseAdapter { @Override public int getCount() { return lists.size(); } @Override public Object getItem(int i) { return lists.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { if(view==null){ view= LayoutInflater.from(GetJsonActivity.this).inflate(R.layout.item_listview,null); ItemTag itemTag=new ItemTag(); itemTag.tv_content= (TextView) view.findViewById(R.id.tv_item_listview_content); itemTag.tv_name= (TextView) view.findViewById(R.id.tv_item_listview_name); itemTag.tv_time= (TextView) view.findViewById(R.id.tv_item_listview_time); view.setTag(itemTag); } ItemTag itemTag= (ItemTag) view.getTag(); itemTag.tv_name.setText(lists.get(i).getName()); itemTag.tv_content.setText(lists.get(i).getContent()); itemTag.tv_time.setText(lists.get(i).getTime()); return view; } } public void getJson(View view){ new MyTask().execute(); } class MyTask extends AsyncTask{ @Override protected void onPreExecute() { super.onPreExecute(); progressDialog.show(); } @Override protected Object doInBackground(Object[] objects) { String path="http://192.168.42.253:8090/front/getJson.xhtml"; try { URL url=new URL(path); HttpURLConnection connection= (HttpURLConnection) url.openConnection(); connection.setRequestMethod("GET"); connection.setConnectTimeout(5000); if(connection.getResponseCode()==200){ InputStream is=connection.getInputStream(); //讀 BufferedReader br=new BufferedReader(new InputStreamReader(is)); StringBuffer stringBuffer=new StringBuffer(); String str=null; while((str=br.readLine())!=null){ stringBuffer.append(str); }// Log.i("test",stringBuffer.toString()); //解析JSOn //01.原生態(tài)// try {// JSONObject jsonObject=new JSONObject(stringBuffer.toString());// String clazz=jsonObject.getString("class");// Log.i("test","class:"+clazz);// int num=jsonObject.getInt("lists");// Log.i("test","lists:"+num);//// JSONArray jsonArray=jsonObject.getJSONArray("fqs");// for (int i = 0; i <jsonArray.length() ; i++) {// JSONObject object=jsonArray.getJSONObject(i);// String name=object.getString("name");// String content=object.getString("content");// String time=object.getString("time");// FQ fq=new FQ(name,content,time);// lists.add(fq);// }// } catch (JSONException e) {// e.printStackTrace();// } //02.使用Gson解析json// Gson gson=new Gson();// BigFQ bigFQ=gson.fromJson(stringBuffer.toString(),BigFQ.class);//// String clazz=bigFQ.getClazz();// int num=bigFQ.getLists();//// Log.i("test","clazz "+clazz+" num:"+num);// lists.addAll(bigFQ.getFqs()); //03.使用FastJson BigFQ bigFQ=JSON.parSEObject(stringBuffer.toString(),BigFQ.class); String clazz=bigFQ.getClazz(); int num=bigFQ.getLists(); Log.i("test","clazz "+clazz+" num:"+num); lists.addAll(bigFQ.getFqs()); } } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(Object o) { super.onPostExecute(o); myAdapter.notifyDataSetChanged(); progressDialog.cancel(); } }}

上面的解析JSon使用了3種不同的方式 第一種是比較原生態(tài)的解析方式,第二種使用了GOOGLE公司自帶的GJson,使用Gson需要導入JAR包 (在gradle依賴(dependencies)中加入compile ‘com.google.code.gson:gson:2.8.0’就導入了Gson的JAR包) 這里寫圖片描述


第三種則需要導入FastJson的JAR包有需要的同學可以前去下載https://github.com/alibaba/fastjson 代碼上完,看看效果圖 這里寫圖片描述 希望對朋友們有幫助,有什么建議請留言。謝謝


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 湖口县| 祁阳县| 平江县| 博白县| 洛浦县| 石首市| 邯郸市| 玛沁县| 江西省| 晋江市| 望都县| 若尔盖县| 南召县| 读书| 义马市| 海口市| 汉中市| 灌阳县| 十堰市| 韶关市| 绥化市| 北辰区| 仁寿县| 鹤庆县| 临澧县| 通州区| 陆河县| 当雄县| 怀柔区| 安吉县| 双流县| 高阳县| 治多县| 台南市| 北票市| 育儿| 改则县| 来安县| 建宁县| 宣化县| 武汉市|