Android JSON數據的解析與封裝小Demo
首先是效果圖:
簡單起見,解析部分并沒有采用解析URL的方式,直接把JSON寫到String里,邏輯比較簡單,這里就不啰嗦了,上代碼:
package com.example.jsondemo; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class Main extends Activity { // private static final String BASE_URL = // "http://zhoumushui.sinaapp.com/json/"; private TextView tvMsg; private TextView tvJson; private EditText etName; private EditText etAge; private String strJson = ""; private String staffInfo = ""; private String strJsonRes = ""; private String strMsg; private Button btnAdd; private Button btnJson; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); tvMsg = (TextView) findViewById(R.id.tvMsg); tvJson = (TextView) findViewById(R.id.tvJson); etName = (EditText) findViewById(R.id.etName); etAge = (EditText) findViewById(R.id.etAge); btnAdd = (Button) findViewById(R.id.btnAdd); btnJson = (Button) findViewById(R.id.btnJson); MsgToJson(); // 封裝Json JsonToMsg(); // 解析Json } class onClickListenerImp implements OnClickListener { @Override public void onClick(View v) { // TODO Auto-generated method stub if (v == btnAdd) { if (strMsg != null && strJson.trim().length() != 0) { strMsg = strMsg + ",{name:'" + etName.getText().toString() + "',age:" + etAge.getText().toString() + "}"; } else { strMsg = "{staff:[{name:'" + etName.getText().toString() + "',age:" + etAge.getText().toString() + "}"; } Toast.makeText(Main.this, "Add Succcess!", Toast.LENGTH_SHORT) .show(); etAge.setText(""); etName.setText(""); } else if (v == btnJson) { strJsonRes = ""; strJsonRes = strMsg + "]}"; tvJson.setText(strJsonRes); } } } private void MsgToJson() { btnAdd.setOnClickListener(new onClickListenerImp()); btnJson.setOnClickListener(new onClickListenerImp()); } private void JsonToMsg() { strJson = "{staff:[{name:'Alex',age:21},{name:'Zhou',age:22},{name:'Anne',age:23}],company:'T-Chip'}"; staffInfo = "原始數據:\n" + strJson + "\n\n解析之后:\n"; try { JSONObject mJsonObject = new JSONObject(strJson); JSONArray mJsonArray = mJsonObject.getJSONArray("staff"); String company = mJsonObject.getString("company"); staffInfo = staffInfo + company + "共有 " + mJsonArray.length() + " 個員工,信息如下:\n"; for (int staffCount = 0; staffCount < mJsonArray.length(); staffCount++) { // 獲取員工 JSONObject staff = mJsonArray.getJSONObject(staffCount); int staffNo = staffCount + 1; staffInfo = staffInfo + "序號:" + staffNo + " 姓名: " + staff.getString("name") + " 年齡: " + staff.getInt("age") + "\n"; } tvMsg.setText(staffInfo); } catch (JSONException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } }
布局有點拖沓,其實數據封裝部分還可以利用一下解析部分的邏輯。
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/tvMsg" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="==========================" /> <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <EditText android:id="@+id/etName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="姓名" /> <EditText android:id="@+id/etAge" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="年齡" /> <Button android:id="@+id/btnAdd" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="增加" /> <Button android:id="@+id/btnJson" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="JSON" /> </LinearLayout> <TextView android:id="@+id/tvJson" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout>
轉載請注明出處:周木水的CSDN博客 http://blog.csdn.net/zhoumushui
我的GitHub:周木水的GitHub https://github.com/zhoumushui
本文由用戶 4e48 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!