0
点赞
收藏
分享

微信扫一扫

Android JSON数据的解析与封装小Demo


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>

举报

相关推荐

0 条评论