android 解析json数据格式
2012-12-21 16:51
597 查看
json数据格式解析我自己分为两种;
一种是普通的,一种是带有数组形式的;
普通形式的:
服务器端返回的json数据格式如下:
{"userbean":{"Uid":"100196","Showname":"\u75af\u72c2\u7684\u7334\u5b50","Avtar":null,"State":1}}
分析代码如下:
// TODO 状态处理 500 200
带数组形式的:
服务器端返回的数据格式为:
{"calendar":
{"calendarlist":
[
{"calendar_id":"1705","title":"(\u4eb2\u5b50)ddssd","category_name":"\u9ed8\u8ba4\u5206\u7c7b","showtime":"1288927800","endshowtime":"1288931400","allDay":false},
{"calendar_id":"1706","title":"(\u65c5\u884c)","category_name":"\u9ed8\u8ba4\u5206\u7c7b","showtime":"1288933200","endshowtime":"1288936800","allDay":false}
]
}
}
分析代码如下:
返回数组,且其中标签名字不确定的
服务器端返回数据格式:
{
"todoList": {
"Android\u7248\u672c\u5b9e\u73b0": [
{
"Id": "64",
"TodosId": "21",
"TopicsId": "75",
"Uid": "20",
"TodoUid": "21",
"DoneUid": "21",
"Title": "\u5854\u7f57\u724c\u529f\u80fd\u5b9e\u73b0",
"Fnishtime": "0",
"State": "1",
"Donetime": "1359713325",
"Updatetime": "1358906177",
"ListTitle": "Android\u7248\u672c\u5b9e\u73b0",
"pid": "8",
"ListId": "21",
"UserName": "\u738b\u91d1\u6d9b",
"Comment": "0",
"ProjectsName": "\u60c5\u4eba\u8282\u4e13\u9898\u58c1\u7eb8"
},
{
"Id": "63",
"TodosId": "21",
"TopicsId": "74",
"Uid": "20",
"TodoUid": "21",
"DoneUid": "21",
"Title": "\u754c\u9762\u5207\u56fe\u66ff\u6362",
"Fnishtime": "0",
"State": "1",
"Donetime": "1359713324",
"Updatetime": "1358906174",
"ListTitle": "Android\u7248\u672c\u5b9e\u73b0",
"pid": "8",
"ListId": "21",
"UserName": "\u738b\u91d1\u6d9b",
"Comment": "5",
"ProjectsName": "\u60c5\u4eba\u8282\u4e13\u9898\u58c1\u7eb8"
}
]
},
"projectList": [
{
"Id": "2",
"TeamsId": "1",
"Title": "\u8fdc\u53e4\u56fe\u817e",
"Description": "\u6e38\u620f\u300a\u8fdc\u53e4\u56fe\u817e\u300b\u3001\u300aAncient flag\u300b\uff0c\u53ea\u8981\u5c06\u76f8\u540c\u7684\u4e24\u5f20\u724c\u7528\u4e09\u6839\u4ee5\u5185\u7684\u76f4\u7ebf\u8fde\u5728\u4e00\u8d77\u5c31\u53ef\u4ee5\u6d88\u9664\uff0c\u89c4\u5219\u7b80\u5355\u5bb9\u6613\u4e0a\u624b\u3002",
"OwnerId": "15",
"Archive": "0",
"Updatetime": "1358408107"
},
{
"Id": "3",
"TeamsId": "1",
"Title": "Todoo_Dug",
"Description": "\u6b22\u8fce\u5927\u5bb6\u63d0\u4ea4BUG",
"OwnerId": "1",
"Archive": "0",
"Updatetime": "1358409824"
},
{
"Id": "6",
"TeamsId": "1",
"Title": "\u719f\u6089Todoo",
"Description": "\u5de5\u6b32\u5584\u5176\u4e8b\uff0c\u5fc5\u5148\u5229\u5176\u5668",
"OwnerId": "15",
"Archive": "0",
"Updatetime": "1358411844"
},
{
"Id": "8",
"TeamsId": "1",
"Title": "\u60c5\u4eba\u8282\u4e13\u9898\u58c1\u7eb8",
"Description": "\u60c5\u4eba\u8282\u4e3b\u9898\u58c1\u7eb8",
"OwnerId": "14",
"Archive": "0",
"Updatetime": "1358756177"
},
{
"Id": "12",
"TeamsId": "1",
"Title": "\u58c1\u7eb8\u4e13\u9898",
"Description": "iOS\uff0c\u5b89\u5353\u58c1\u7eb8\u8f6f\u4ef6\u96c6\u5408",
"OwnerId": "14",
"Archive": "0",
"Updatetime": "1361253119"
},
{
"Id": "13",
"TeamsId": "1",
"Title": "Todoo\u5ba2\u6237\u7aef\u9879\u76ee",
"Description": "iphone,ipad\u7248todoo",
"OwnerId": "14",
"Archive": "0",
"Updatetime": "1361600060"
}
]
}
解析代码:
try {
List<UserTodo> userTodosList = new ArrayList<UserTodo>();
List<UserProject> userProjectsList = new ArrayList<UserProject>();
JSONObject jsonObject = new JSONObject(jsonStr);
JSONObject todoObject = (JSONObject) jsonObject
.optJSONObject("todoList");
JSONArray projectArray = jsonObject.getJSONArray("projectList");
if (todoObject != null) {
JSONArray todoArray = todoObject.names();
for (int i = 0; i < todoArray.length(); i++) {
JSONArray userTodos = todoObject.optJSONArray(todoArray
.getString(i));
for (int j = 0; j < userTodos.length(); j++) {
JSONObject userTodo = userTodos.optJSONObject(j);
UserTodo todo = new UserTodo();
todo.setId(userTodo.optInt(UserTodo.FIELD_ID));
todo.setTitle(userTodo.optString(UserTodo.FIELD_TITLE));
userTodosList.add(todo);
}
}
}
TDUserTodoDao userTodoDao = new TDUserTodoDao(context);
userTodoDao.deleteAll();
userTodoDao.addAll(userTodosList);
for (int i = 0; i < projectArray.length(); i++) {
JSONObject userProject = (JSONObject) projectArray.opt(i);
UserProject project = new UserProject();
project.setId(userProject.optInt(UserProject.FIELD_ID));
project.setTitle(userProject.optString(UserProject.FIELD_TITLE));
userProjectsList.add(project);
}
TDUserProjectDao userProjectDao = new TDUserProjectDao(context);
userProjectDao.deleteAll();
userProjectDao.addAll(userProjectsList);
} catch (JSONException e) {
e.printStackTrace();
}该例子只解析了部分需要的属性。
总结,普通形式的只需用JSONObject ,带数组形式的需要使用JSONArray 将其变成一个list。
一种是普通的,一种是带有数组形式的;
普通形式的:
服务器端返回的json数据格式如下:
{"userbean":{"Uid":"100196","Showname":"\u75af\u72c2\u7684\u7334\u5b50","Avtar":null,"State":1}}
分析代码如下:
// TODO 状态处理 500 200
int res = 0; res = httpClient.execute(httpPost).getStatusLine().getStatusCode(); if (res == 200) { /* * 当返回码为200时,做处理 * 得到服务器端返回json数据,并做处理 * */ HttpResponse httpResponse = httpClient.execute(httpPost); StringBuilder builder = new StringBuilder(); BufferedReader bufferedReader2 = new BufferedReader( new InputStreamReader(httpResponse.getEntity().getContent())); String str2 = ""; for (String s = bufferedReader2.readLine(); s != null; s = bufferedReader2 .readLine()) { builder.append(s); } Log.i("cat", ">>>>>>" + builder.toString()); JSONObject jsonObject = new JSONObject(builder.toString()) .getJSONObject("userbean"); String Uid; String Showname; String Avtar; String State; Uid = jsonObject.getString("Uid"); Showname = jsonObject.getString("Showname"); Avtar = jsonObject.getString("Avtar"); State = jsonObject.getString("State");
带数组形式的:
服务器端返回的数据格式为:
{"calendar":
{"calendarlist":
[
{"calendar_id":"1705","title":"(\u4eb2\u5b50)ddssd","category_name":"\u9ed8\u8ba4\u5206\u7c7b","showtime":"1288927800","endshowtime":"1288931400","allDay":false},
{"calendar_id":"1706","title":"(\u65c5\u884c)","category_name":"\u9ed8\u8ba4\u5206\u7c7b","showtime":"1288933200","endshowtime":"1288936800","allDay":false}
]
}
}
分析代码如下:
// TODO 状态处理 500 200 int res = 0; res = httpClient.execute(httpPost).getStatusLine().getStatusCode(); if (res == 200) { /* * 当返回码为200时,做处理 * 得到服务器端返回json数据,并做处理 * */ HttpResponse httpResponse = httpClient.execute(httpPost); StringBuilder builder = new StringBuilder(); BufferedReader bufferedReader2 = new BufferedReader( new InputStreamReader(httpResponse.getEntity().getContent())); String str2 = ""; for (String s = bufferedReader2.readLine(); s != null; s = bufferedReader2 .readLine()) { builder.append(s); } Log.i("cat", ">>>>>>" + builder.toString()); /** * 这里需要分析服务器回传的json格式数据, */ JSONObject jsonObject = new JSONObject(builder.toString()) .getJSONObject("calendar"); JSONArray jsonArray = jsonObject.getJSONArray("calendarlist"); for(int i=0;i<jsonArray.length();i++){ JSONObject jsonObject2 = (JSONObject)jsonArray.opt(i); CalendarInfo calendarInfo = new CalendarInfo(); calendarInfo.setCalendar_id(jsonObject2.getString("calendar_id")); calendarInfo.setTitle(jsonObject2.getString("title")); calendarInfo.setCategory_name(jsonObject2.getString("category_name")); calendarInfo.setShowtime(jsonObject2.getString("showtime")); calendarInfo.setEndtime(jsonObject2.getString("endshowtime")); calendarInfo.setAllDay(jsonObject2.getBoolean("allDay")); calendarInfos.add(calendarInfo); }
返回数组,且其中标签名字不确定的
服务器端返回数据格式:
{
"todoList": {
"Android\u7248\u672c\u5b9e\u73b0": [
{
"Id": "64",
"TodosId": "21",
"TopicsId": "75",
"Uid": "20",
"TodoUid": "21",
"DoneUid": "21",
"Title": "\u5854\u7f57\u724c\u529f\u80fd\u5b9e\u73b0",
"Fnishtime": "0",
"State": "1",
"Donetime": "1359713325",
"Updatetime": "1358906177",
"ListTitle": "Android\u7248\u672c\u5b9e\u73b0",
"pid": "8",
"ListId": "21",
"UserName": "\u738b\u91d1\u6d9b",
"Comment": "0",
"ProjectsName": "\u60c5\u4eba\u8282\u4e13\u9898\u58c1\u7eb8"
},
{
"Id": "63",
"TodosId": "21",
"TopicsId": "74",
"Uid": "20",
"TodoUid": "21",
"DoneUid": "21",
"Title": "\u754c\u9762\u5207\u56fe\u66ff\u6362",
"Fnishtime": "0",
"State": "1",
"Donetime": "1359713324",
"Updatetime": "1358906174",
"ListTitle": "Android\u7248\u672c\u5b9e\u73b0",
"pid": "8",
"ListId": "21",
"UserName": "\u738b\u91d1\u6d9b",
"Comment": "5",
"ProjectsName": "\u60c5\u4eba\u8282\u4e13\u9898\u58c1\u7eb8"
}
]
},
"projectList": [
{
"Id": "2",
"TeamsId": "1",
"Title": "\u8fdc\u53e4\u56fe\u817e",
"Description": "\u6e38\u620f\u300a\u8fdc\u53e4\u56fe\u817e\u300b\u3001\u300aAncient flag\u300b\uff0c\u53ea\u8981\u5c06\u76f8\u540c\u7684\u4e24\u5f20\u724c\u7528\u4e09\u6839\u4ee5\u5185\u7684\u76f4\u7ebf\u8fde\u5728\u4e00\u8d77\u5c31\u53ef\u4ee5\u6d88\u9664\uff0c\u89c4\u5219\u7b80\u5355\u5bb9\u6613\u4e0a\u624b\u3002",
"OwnerId": "15",
"Archive": "0",
"Updatetime": "1358408107"
},
{
"Id": "3",
"TeamsId": "1",
"Title": "Todoo_Dug",
"Description": "\u6b22\u8fce\u5927\u5bb6\u63d0\u4ea4BUG",
"OwnerId": "1",
"Archive": "0",
"Updatetime": "1358409824"
},
{
"Id": "6",
"TeamsId": "1",
"Title": "\u719f\u6089Todoo",
"Description": "\u5de5\u6b32\u5584\u5176\u4e8b\uff0c\u5fc5\u5148\u5229\u5176\u5668",
"OwnerId": "15",
"Archive": "0",
"Updatetime": "1358411844"
},
{
"Id": "8",
"TeamsId": "1",
"Title": "\u60c5\u4eba\u8282\u4e13\u9898\u58c1\u7eb8",
"Description": "\u60c5\u4eba\u8282\u4e3b\u9898\u58c1\u7eb8",
"OwnerId": "14",
"Archive": "0",
"Updatetime": "1358756177"
},
{
"Id": "12",
"TeamsId": "1",
"Title": "\u58c1\u7eb8\u4e13\u9898",
"Description": "iOS\uff0c\u5b89\u5353\u58c1\u7eb8\u8f6f\u4ef6\u96c6\u5408",
"OwnerId": "14",
"Archive": "0",
"Updatetime": "1361253119"
},
{
"Id": "13",
"TeamsId": "1",
"Title": "Todoo\u5ba2\u6237\u7aef\u9879\u76ee",
"Description": "iphone,ipad\u7248todoo",
"OwnerId": "14",
"Archive": "0",
"Updatetime": "1361600060"
}
]
}
解析代码:
try {
List<UserTodo> userTodosList = new ArrayList<UserTodo>();
List<UserProject> userProjectsList = new ArrayList<UserProject>();
JSONObject jsonObject = new JSONObject(jsonStr);
JSONObject todoObject = (JSONObject) jsonObject
.optJSONObject("todoList");
JSONArray projectArray = jsonObject.getJSONArray("projectList");
if (todoObject != null) {
JSONArray todoArray = todoObject.names();
for (int i = 0; i < todoArray.length(); i++) {
JSONArray userTodos = todoObject.optJSONArray(todoArray
.getString(i));
for (int j = 0; j < userTodos.length(); j++) {
JSONObject userTodo = userTodos.optJSONObject(j);
UserTodo todo = new UserTodo();
todo.setId(userTodo.optInt(UserTodo.FIELD_ID));
todo.setTitle(userTodo.optString(UserTodo.FIELD_TITLE));
userTodosList.add(todo);
}
}
}
TDUserTodoDao userTodoDao = new TDUserTodoDao(context);
userTodoDao.deleteAll();
userTodoDao.addAll(userTodosList);
for (int i = 0; i < projectArray.length(); i++) {
JSONObject userProject = (JSONObject) projectArray.opt(i);
UserProject project = new UserProject();
project.setId(userProject.optInt(UserProject.FIELD_ID));
project.setTitle(userProject.optString(UserProject.FIELD_TITLE));
userProjectsList.add(project);
}
TDUserProjectDao userProjectDao = new TDUserProjectDao(context);
userProjectDao.deleteAll();
userProjectDao.addAll(userProjectsList);
} catch (JSONException e) {
e.printStackTrace();
}该例子只解析了部分需要的属性。
总结,普通形式的只需用JSONObject ,带数组形式的需要使用JSONArray 将其变成一个list。
相关文章推荐
- Android JSON数据格式解析
- Android开发中使用fastJSON将json格式的数据快速解析生成实体类并附上实体类生成器
- Android解析相同接口返回不同格式json数据的方法
- Android中的xml、json格式数据解析
- Android数据格式解析对象JSON用法
- Android连接服务器数据库查询+Gson解析(List和Map)格式json数据(一)
- Android数据格式解析对象JSON用法
- android实现json数据的解析和把数据转换成json格式的字符串
- android实现json数据的解析和把数据转换成json格式的字符串
- Android访问网络:服务端返回XML或JSON格式数据,Android 进行解析并使用ListView显示
- android 解析json数据格式
- Android App数据格式Json解析方法和常见问题
- Android学习---使用JSONObject 解析JSON格式数据
- Android-数据格式解析对象JSON用法
- Android-App数据格式之解析Json
- Android自带json和Gson数据格式解析示列
- Android数据格式解析对象JSON用法
- android实现json数据的解析和把数据转换成json格式的字符串
- Android JSON数据格式的解析,与简单对象、带泛型的List和Map的转换,以及GSON的使用
- android学习二十三(解析json格式数据)