麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 系統 > Android > 正文

Android解析JSON

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

首先需要服務器端生成JSON 數據,然后再到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 這里寫圖片描述

接下來安卓獲取數據并解析 上代碼 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 數據各種相對應

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.原生態// 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種不同的方式 第一種是比較原生態的解析方式,第二種使用了GOOGLE公司自帶的GJson,使用Gson需要導入JAR包 (在gradle依賴(dependencies)中加入compile ‘com.google.code.gson:gson:2.8.0’就導入了Gson的JAR包) 這里寫圖片描述


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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 一区二区三区手机在线观看 | 久久久久久久久亚洲精品 | 亚洲网站一区 | 日本教室三级在线看 | 51色视频| 国产在线中文 | 成人在线视频一区 | 福利在线播放 | 欧美.com| 久久精品中文 | 12av毛片 | xxxxhdhdhdhd日本| 色就操 | 国产色爱综合网 | 欧美一级黄色影院 | 国产午夜免费福利 | 欧美巨根 | 国产一区二区久久精品 | 天天草天天干天天 | 欧美一级片 在线播放 | 欧美三级一级 | 337p日本欧洲亚洲大胆精蜜臀 | 欧美成在人线a免费 | 亚洲嫩草av | 精品不卡 | 亚洲国产超高清a毛毛片 | 看一级毛片 | 久久精品日产第一区二区三区 | 国产精品视频成人 | 免费国产一级淫片 | 亚洲一区 国产 | 天天看成人免费毛片视频 | 全网免费毛片 | 九九精品在线播放 | 成人午夜影院 | 国产精品亚洲欧美一级在线 | 成人三级黄色片 | 亚洲第一成人久久网站 | 成人一级黄色片 | 黄色片网站免费观看 | 国产91一区二区三区 |