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>










