android实现json数据的解析和把数据转换成json格式的字符串

利用android sdk里面的

JSONObject和JSONArray把集合或者普通数据,转换成json格式的字符串

JSONObject和 JSONArray解析json格式的字符串为集合或者一般数据

001 import java.util.ArrayList;
002 import java.util.List;
003  
004 import org.json.JSONArray;
005 import org.json.JSONException;
006 import org.json.JSONObject;
007  
008 import android.app.Activity;
009 import android.os.Bundle;
010 import android.util.Log;
011 import android.view.View;
012 import android.view.View.OnClickListener;
013 import android.widget.Button;
014 import android.widget.TextView;
015 import android.widget.Toast;
016  
017 public class MainActivity extends Activity implements OnClickListener {
018 private Button button1, button2, button3, button4; //4个按钮
019 private TextView textView; //显示处理结果的textview
020 private List<UserBean> userBeans; //保存数据的集合
021 private JSONObject object; //JSONObject对象,处理一个一个的对象
022 private JSONObject object2;
023 private JSONArray jsonArray;//JSONObject对象,处理一个一个集合或者数组
024 private String jsonString; //保存带集合的json字符串
025 private String jsonString2;//不带集合的json字符串
026 @Override
027 protected void onCreate(Bundle savedInstanceState) {
028 super.onCreate(savedInstanceState);
029 setContentView(R.layout.main);
030 initView(); //初始化控件
031 initDate(); //初始化数据
032 setListener(); //绑定监事件
033  
034 }
035  
036 private void initView() {
037 button1 = (Button) findViewById(R.id.bt1);
038 button2 = (Button) findViewById(R.id.bt2);
039 button3 = (Button) findViewById(R.id.bt3);
040 button4 = (Button) findViewById(R.id.bt4);
041 textView = (TextView) findViewById(R.id.text);
042 }
043 /**
044 * 初始化2个用户对象
045 */
046 private void initDate() {
047 userBeans = new ArrayList<UserBean>();
048 UserBean userBean = new UserBean();
049 userBean.setUserId(1);
050 userBean.setUserName("hck");
051 userBeans.add(userBean);
052  
053 UserBean userBean2 = new UserBean();
054 userBean2.setUserId(2);
055 userBean2.setUserName("蝌蚪");
056 userBeans.add(userBean2);
057  
058 }
059  
060 private void setListener() {
061 button1.setOnClickListener(this);
062 button2.setOnClickListener(this);
063 button3.setOnClickListener(this);
064 button4.setOnClickListener(this);
065 }
066  
067 private void changeArrayDateToJson() { //把一个集合转换成json格式的字符串
068 jsonArray=null;
069 object=null;
070 jsonArray = new JSONArray();
071 object=new JSONObject();
072 for (inti = 0; i < userBeans.size(); i++) { //遍历上面初始化的集合数据,把数据加入JSONObject里面
073 object2 = new JSONObject();//一个user对象,使用一个JSONObject对象来装
074 try {
075 object2.put("userId", userBeans.get(i).getUserId()); //从集合取出数据,放入JSONObject里面 JSONObject对象和map差不多用法,以键和值形式存储数据
076 object2.put("userName", userBeans.get(i).getUserName());
077 jsonArray.put(object2); //把JSONObject对象装入jsonArray数组里面
078 catch (JSONException e) {
079 e.printStackTrace();
080 }
081 }
082 try {
083 object.put("userDate", jsonArray); //再把JSONArray数据加入JSONObject对象里面(数组也是对象)
084 //object.put("time", "2013-11-14"); //这里还可以加入数据,这样json型字符串,就既有集合,又有普通数据
085 catch (JSONException e) {
086 e.printStackTrace();
087 }
088 jsonString=null;
089 jsonString = object.toString(); //把JSONObject转换成json格式的字符串
090 textView.setText(jsonString);
091 Log.i("hck""转换成json字符串: " + jsonString);
092  
093 }
094 private void changeNotArrayDateToJson() {
095 object=null;
096 object=new JSONObject();
097 try {
098 object.put("userId""1"); //把数据加入JSONObject对象即可,"userid"相当于map里面的key,1即为value的值。
099 object.put("userName""hck");
100 catch (JSONException e) {
101 e.printStackTrace();
102 }
103 jsonString2=null;
104 jsonString2 = object.toString();//把JSONObject转换成json格式的字符串
105 Log.i("hck""转换成json字符串: " + jsonString2);
106 textView.setText(jsonString2);
107 }
108  
109 @Override
110 public void onClick(View v) {
111 switch (v.getId()) {
112 case R.id.bt1:
113 changeNotArrayDateToJson(); //点击第一个按钮,把集合转换成json数据格式的string
114 break;
115  
116 case R.id.bt2:
117 changeArrayDateToJson(); //点击第2个按钮,把普通数据换成json数据格式的string
118 break;
119 case R.id.bt3: //解析不带集合的json字符串
120 if (jsonString2==null || "".equals(jsonString2)) {
121 Toast.makeText(MainActivity.this"请先点击上面第1个按钮转把数据换成json字符串", Toast.LENGTH_LONG).show();
122 return;
123 }
124 changeJsonToData2();
125 break;
126 case R.id.bt4://解析带集合的json字符串
127 if (jsonString==null || "".equals(jsonString)) {
128 Toast.makeText(MainActivity.this"请先点击第2按钮把数据换成json字符串", Toast.LENGTH_LONG).show();
129 return;
130 }
131 changeJsonToData1();
132 break;
133 default:
134 break;
135 }
136  
137 }
138 private void changeJsonToData1()
139 {
140 StringBuilder stringBuilder=new StringBuilder(); //用来保存解析出来的额数据,显示在textview
141 UserBean userBean;
142 List<UserBean> bList=new ArrayList<UserBean>();
143 try {
144 object=new JSONObject(jsonString); //用json格式的字符串获取一个JSONObject对象
145 jsonArray=object.getJSONArray("userDate"); //通过key,获取JSONObject里面的一个JSONArray数组
146 for (int i = 0; i < jsonArray.length(); i++) { //遍历数据
147 object=jsonArray.getJSONObject(i); //从JSONArray里面获取一个JSONObject对象
148 userBean=new UserBean();
149 userBean.setUserId(object.getInt("userId")); //通过key,获取里面的数据
150 userBean.setUserName(object.getString("userName"));
151 bList.add(userBean);
152 }
153 catch (JSONException e) {
154 e.printStackTrace();
155 }
156 for (int i = 0; i < bList.size(); i++) {
157 stringBuilder.append("用户id:"+bList.get(i).getUserId()).append(" ").append("用户名字:"+bList.get(i).getUserName());
158 }
159 textView.setText(stringBuilder.toString().replace("null"""));
160 }
161 private void changeJsonToData2()
162 {
163 try {
164 object=new JSONObject(jsonString2);
165 String userName=object.getString("userName");
166 String userIdString=object.getString("userId");
167 textView.setText("用户id"+userIdString+"用户名字:"+userName);
168 catch (JSONException e) {
169 e.printStackTrace();
170 }
171 }
172 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值