json解析简单数据<一>
2016-03-15 09:56
585 查看
这两天在翻新项目,之前写项目的时候,每次请求服务器返回数据时都要定义对象,代码显的很臃肿,于是查了相关资料,这次使用谷歌的json自带的几个类没有定义对象实现对服务器返回数据进行了解析。
数据类型01:
数据类型03:
不定义新的对象,直接使用json中的JSONArray和JSONObject进行数据转换,废话不多说,直接上代码(代码读万行,敲码如有神^_^):
看看代码,自己慢慢体会吧。另外附上代码原件:demo下载 http://download.csdn.net/detail/abc6368765/9461908
本次解析使用到了android中和JSON解析相关的JSONObject和JSONArray类,另外还有JSONStringer和JSONTokener,JSONException这几个类和JSON解析有关,大家可以查阅一下。
先说三种常见的json数据类型。数据类型01:
[ { "id": 1, "name": "小猪" }, { "id": 2, "name": "小猫" } ]数据类型02:
{ "arrayData": [ { "id": 1, "name": "小猪" }, { "id": 2, "name": "小猫" } ], "success": true, "total": 2 }
数据类型03:
{ "age": 23, "content": { "questions": [ { "answer": "小猪", "question": "what's your name?" }, { "answer": "23", "question": "what's your age" } ], "questionsTotal": 2 }, "name": "小猪" }
不定义新的对象,直接使用json中的JSONArray和JSONObject进行数据转换,废话不多说,直接上代码(代码读万行,敲码如有神^_^):
public class MainActivity extends Activity { String jsonString01 = "[{\"id\":1,\"name\":\"小猪\"},{\"id\":2,\"name\":\"小猫\"}]"; String jsonString02 = "{\"total\":2,\"success\":true,\"arrayData\":[{\"id\":1,\"name\":\"小猪\"},{\"id\":2,\"name\":\"小猫\"}]}"; String jsonString03 = "{\"name\":\"小猪\", \"age\":23,\"content\":{\"questionsTotal\":2,\"questions\": [ { \"question\": \"what's your name?\", \"answer\": \"小猪\"},{\"question\": \"what's your age\", \"answer\": \"23\"}]}}"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); JsonfromTest01(); JsonfromTest02(); JsonfromTest03(); } /**** * 不定义bean对象 * 使用json解析第一种数据类型 */ private void JsonfromTest01() { try { JSONArray jsonArray = new JSONArray(jsonString01); //数据直接为一个数组形式,所以可以直接 用android提供的框架JSONArray读取JSON数据,转换成Array for (int i = 0; i < jsonArray.length(); i++) { JSONObject item = jsonArray.getJSONObject(i); //每条记录又由几个Object对象组成 int id = item.getInt("id"); // 获取对象对应的值 String name = item.getString("name"); Log.i("JsonfromTest01解析结果", "id = " + id + "; name = " + name); //打印结果 } } catch (JSONException e) { e.printStackTrace(); } } /**** * 不定义bean对象 * 使用json解析第二种数据类型 */ public void JsonfromTest02(){ try { int total; Boolean success; JSONObject jsonObject=new JSONObject(jsonString02); //返回的数据形式是一个Object类型,所以可以直接转换成一个Object total = jsonObject.getInt("total"); success = jsonObject.getBoolean("success"); Log.i("JsonfromTest02解析结果", "total = " + total + "; success = " + success); //测试数据 JSONArray jsonArray = jsonObject.getJSONArray("arrayData");//里面有一个数组数据,可以用getJSONArray获取数组 for (int i = 0; i < jsonArray.length(); i++) { JSONObject item = jsonArray.getJSONObject(i); //每条记录又由几个Object对象组成 int id = item.getInt("id"); // 获取对象对应的值 String name = item.getString("name"); Log.i("JsonfromTest02解析结果", "id = " + id + "; name = " + name); //打印结果 } } catch (JSONException e) { e.printStackTrace(); } } /**** * 不定义bean对象 * 使用json解析第三种数据类型 */ public void JsonfromTest03(){ try { JSONObject jsonObject = new JSONObject(jsonString03); //返回的数据形式是一个Object类型,所以可以直接转换成一个Object String name=jsonObject.getString("name"); int age=jsonObject.getInt("age"); Log.i("JsonfromTest03解析结果", "name = " + name + "; age = " + age); //测试数据 JSONObject contentObject=jsonObject.getJSONObject("content"); //获取对象中的对象 String questionsTotal=contentObject.getString("questionsTotal"); //获取对象中的一个值 Log.i("JsonfromTest03解析结果", "questionsTotal = " + questionsTotal); //测试数据 JSONArray jsonArray = contentObject.getJSONArray("questions");//里面有一个数组数据,可以用getJSONArray获取数组 for (int i = 0; i < jsonArray.length(); i++) { JSONObject item = jsonArray.getJSONObject(i); //每条记录又由几个Object对象组成 String answer = item.getString("answer"); // 获取对象对应的值 String question = item.getString("question"); Log.i("JsonfromTest03解析结果", "answer = " + answer + "; question = " + question); //打印结果 } } catch (JSONException e) { e.printStackTrace(); } } }
看看代码,自己慢慢体会吧。另外附上代码原件:demo下载 http://download.csdn.net/detail/abc6368765/9461908
相关文章推荐
- JSONModel解析数据成Model
- jsp+servlet
- 利用js获取时间并输出值
- Extjs中常用表单介绍与应用
- JSON与XML的区别比较
- JavaScript隐式类型转换
- Clipboard.js实现复制内容到剪切板
- JavaScript事件处理机制
- 去掉 URL 中讨厌的 jsessionid
- jsp简单等录
- JS---自己编写的常见的控件验证
- JavaScript正则表达式匹配 div style标签
- JSP内置对象-pageContext(其中包括域对象的使用)
- 关于北京朋友的驰骋工作流引擎的是否可以封装到js接口的答复
- 如何将Action中的Hibernate查询结果LIST输出在控制台以及JSP界面
- JavaScript中的对象
- 很实用的表单验证js
- JavaScript年月日三级联动
- javascript模板插件amaze.js
- Arcgis for js,Openlayers中加载GeoJSON