服务器端采用AXIS2 提供Web Service
使用json-lib库实现json数据的转换。
服务器端将数据转换为json的方法如下:
List<EnvironmentBean> envList = dbMgr.getEnvironmentInfo();
JSONArray jArray = JSONArray.fromObject(envList);
return jArray.toString();
获得JSON数据如下:
{
"return": "[{\"ambient\":2999,\"devLocation\":\"客厅\",\"dewpoint\":29,\"humi\":29,\"id\":647,\"nodeId\":1,\"temp\":29,\"timestamp\":\"2013-12-03 11:39:20.0\"},{\"ambient\":730.28,\"devLocation\":\"客厅\",\"dewpoint\":9.14,\"humi\":52.74,\"id\":646,\"nodeId\":6,\"temp\":19,\"timestamp\":\"2013-11-20 11:05:56.0\"}]"
}
在Android客户端中使用org.json库进行解析的时候
出现如下的错误
org.json.JSONException: Unterminated object at character
求解。
原因应该是反馈的JSON不标准,正常的JSON里面应该是没有中文的,遇到中文信息要转成对应的转义码。
而且我想吐槽把一整段数组内容放在纯文本里面返回的JSON完全是没有作为JSON的价值……
推荐格式:
{
"return": [
{
"ambient": 2999,
"devLocation": "\u5BA2\u5385",
"dewpoint": 29,
"humi": 29,
"id": 647,
"nodeId": 1,
"temp": 29,
"timestamp": "2013-12-03 11:39:20.0"
},
{
"ambient": 730.28,
"devLocation": "\u5BA2\u5385",
"dewpoint": 9.14,
"humi": 52.74,
"id": 646,
"nodeId": 6,
"temp": 19,
"timestamp": "2013-11-20 11:05:56.0"
}
]
}
那个"return"的val就是个字符串,里面的string拿出来再做为对象去解析