无法解析JSON数组字符串

时间:2014-04-04 07:33:57

标签: javascript json

我正在处理项目,我在该项目中发送请求服务器以获取JSON数组字符串。我正在使用以下java代码创建一个JSON数组列表字符串。

JSONArray itemList = new JSONArray();
for(int i =0; i<4; i++) {
    String exe = "m";
    final JSONObject jsonObj = new JSONObject();
    jsonObj.put("filePath", 30);
    jsonObj.put("duration", 12222);
    jsonObj.put("bitRate", 1111);
    jsonObj.put("widht", 12);
    jsonObj.put("format", 123);
    jsonObj.put("height", 12);
    jsonObj.put("exe", exe);
    JSONObject jObject = new JSONObject();

    try {
        itemList.put(jsonObj);
        // jObject.put("itemList", itemList);
    } catch (Exception e) {
        System.out.println("ERROR");
    }
}
return itemList.toString();

在客户端,在AJAX响应中,我使用上面的方法来跟踪String:

[{"duration":12222&sbquo;"height":12&sbquo;"widht":12&sbquo;"filePath":30&sbquo;"format":123&sbquo;"bitRate":1111&sbquo;"exe":"m"}&sbquo;{"duration":12222&sbquo;"height":12&sbquo;"widht":12&sbquo;"filePath":30&sbquo;"format":123&sbquo;"bitRate":1111&sbquo;"exe":"m"}&sbquo;{"duration":12222&sbquo;"height":12&sbquo;"widht":12&sbquo;"filePath":30&sbquo;"format":123&sbquo;"bitRate":1111&sbquo;"exe":"m"}&sbquo;{"duration":12222&sbquo;"height":12&sbquo;"widht":12&sbquo;"filePath":30&sbquo;"format":123&sbquo;"bitRate":1111&sbquo;"exe":"m"}]

当我使用JQuery解析它时,如下所示:

$jQ.each($jQ.parseJSON(responseJSON), function(idx, obj) {
    alert(obj.filePath);
});

我的JS错误为JSON.parse: expected property name or '}'

我不知道为什么会出现这个错误。

3 个答案:

答案 0 :(得分:1)

根据jsonlint.com,您应该将值放入""

由于特殊字符&

答案 1 :(得分:1)

只看前几行:

[{"duration":12222&sbquo;"height":12&sbquo;

这似乎不是有效的json。 duration是关键,值12222Integer,但是你在int旁边也有字符串数据&sbquo;,这会产生无效的json数据。

如果您有混合数据,请使用双引号对其进行封装,以将其视为字符串。


<强>更新

,被html编码为&sbquo; - 这是你的问题。

试试这个json字符串:

[
    {
        "duration": 12222,
        "height": 12,
        "widht": 12,
        "filePath": 30,
        "format": 123,
        "bitRate": 1111,
        "exe": "m"
    },
    {
        "duration": 12222,
        "height": 12,
        "widht": 12,
        "filePath": 30,
        "format": 123,
        "bitRate": 1111,
        "exe": "m"
    },
    {
        "duration": 12222,
        "height": 12,
        "widht": 12,
        "filePath": 30,
        "format": 123,
        "bitRate": 1111,
        "exe": "m"
    },
    {
        "duration": 12222,
        "height": 12,
        "widht": 12,
        "filePath": 30,
        "format": 123,
        "bitRate": 1111,
        "exe": "m"
    }
]

这现在验证了。

答案 2 :(得分:0)

您的java环境可能错误地序列化了数组。

而不是, - 单引号U + 201A - 你应该有一个逗号(,U + 002C)。