首页 > Android解析JSON数据出错

Android解析JSON数据出错

服务器端采用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拿出来再做为对象去解析

【热门文章】
【热门文章】