无法从服务器解析JSON数据

时间:2015-03-12 10:46:50

标签: java jquery json spring spring-mvc

我在firefox中遇到错误:

  

DataTables警告(表id =' alertfilters'):DataTables警告:无法解析来自服务器的JSON数据。这是由JSON格式错误引起的

我正在使用DataTables和ajax在我的jsp中显示Table。

HTML

<table id="alertfilters" class="display" style="width: 100%; border-spacing: 0px;" >
    <thead>
        <tr>
            <th>User Name</th>
            <th>Expiration Time</th>
            <th>Last Matched Time</th>
            <th>State</th>
            <th>Matched Today Count</th>
            <th>Use RegEx</th>
        </tr>
    </thead>
</table>

Spring Controller

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

@RequestMapping("/getFilters/{serverName}/")
public JSONObject getFilters(@PathVariable String serverName, HttpServletRequest request) {
    JSONObject json = new JSONObject();     
    List<FilterJSONVO> filteredAlerts = alertFilterService.getAlertFilters(serverName, "");
    JSONArray jsonArray = new JSONArray();
    jsonArray.addAll(filteredAlerts);
    json.put("data", jsonArray);
    return json;
}

Jquery的

 $(document).ready(function() {
    $('#alertfilters').dataTable( {
        "sAjaxSource" : 'getFilters/${sessionScope.monitorServerName}/',
        "columns": [
            { "data": "userName" },
            { "data": "expirationTime" },
            { "data": "lastMatchedTime" },
            { "data": "state" },
            { "data": "matchedTodayCount" },
            { "data": "useRegEx" }
        ]
    } );
} ); 

在萤火虫响应中我可以看到:

{}
&&
{
    "data": [{
        "activationTime": "1969-12-31T19:00:00.000-0500",
        "description": "Set permanent alert filter ",
        "expirationTime": "1969-12-31T19:00:00.000-0500",
        "hosts": "asdfrd",
        "lastMatchedTime": "2012-09-08T10:34:27.501-0400",
        "matchStrings": "psl[0-9]",
        "matchedTodayCount": "0",
        "nameValuePairs": "",
        "objectId": "212121",
        "state": "PERMANENT",
        "useRegEx": "true",
        "userName": "z111111z"
    }]
}

我的getFilters方法的返回语句的调试屏幕截图。

enter image description here

我认为这可能是因为那些 {}&amp;&amp; 我在回复中,但我不知道为什么我会得到这些。知道我错过了什么吗?

2 个答案:

答案 0 :(得分:2)

方法getFilters()未返回JSONObject 因为您没有使用@ResponseBody添加JSONObject。

您需要在方法上方添加@ResponseBody注释,并将响应类型更改为@RequestMapping中的application/json

有关详细信息,请参阅this spring documentaion

或者

您只需在方法

上放置@RequestBody注释即可

答案 1 :(得分:1)

{} &&使您的json无效。这是事实。 您是否可以尝试调试getFilters方法,并确保json变量返回正确的json?