2016-01-18 79 views
1

当试图解析JSON被我的Serlvet回到我的JSP页面下面的代码行抛出一个无效的字符异常:为什么这个JSON字符串无效? jQuery.parseJSON函数抛出无效字符

var obj = jQuery.parseJSON(data); 

客户端代码

<script type = "text/javascript"> 
     function updateProgrammerDetails(site, Id) { 

      $.post('EngineAdminServlet', 
        { 
         action: "updateProgrammerMenu", 
         siteDetails: site, 
         ID: Id, 
        }, 
        function(data, status){ 
         var pid, name, sky, ip, eleven; 
         var obj = jQuery.parseJSON(data); 

         ......... 


         } 
        }).fail(function(error) { 
         alert("Error retrieving details from server"); 
      }); //end ajax call 
     } 
</script> 

GENERATED JSON字符串中使用GSON

我已经导入了GSON LIB在我的Servlet类中进行转换,以便将我的Java对象'ProgrammerForJSP'转换为JSON字符串。在其他帖子中建议这样做,以避免在自己创建JSON字符串时出现任何拼写错误。这是它返回的字符串:

{"ID":123,"siteName":"VEGAS","skyl":"WZ0019","ipAddress":"0.0.0.0","code":"L/BEG"} 

servlet代码

.... 

response.setContentType("application/json"); 
response.setCharacterEncoding("UTF-8"); 
String gson = new Gson().toJson(myObject); 
response.getWriter().write(gson); 
} //end of method 

我不知道如果我缺少一个步骤,或者做错了什么?我的想法是,IP地址字段可能会抛出解析器并破坏代码(因此无效的字符异常),因为它包含句点字符吗?我真的不知道。

编辑 我使用jQuery,1.11.3.js

+0

对不起@rory这是一个急件,所以我可能没有解释得很好。我已经向我的servlet发布了一个ID以及来自我的JSP页面的其他一些属性,然后用它们在servlet上创建一个对象。然后使用Gson将此对象解析为JSON字符串,以便我可以从对象中获取一些属性,并在返回时填充JSP页面上的一些字段。然而,这是错误发生的时候:当我试图解析回JSP页面上的对象时,它抛出了无效的字符异常,所以我无法遍历我的对象以从中获取值... –

回答

0

的错误是因为$.post方法已检测到一个JSON响应,并且分析出结果的对象为您服务。然后,您尝试在对象上调用parseJSON而不是JSON字符串,这会导致您看到的错误。你只需要删除呼叫$.parseJSON。试试这个:

function updateProgrammerDetails(site, Id) { 
    $.post('EngineAdminServlet', { 
     action: "updateProgrammerMenu", 
     siteDetails: site, 
     ID: Id, 
    }, function(data, status) { 
     var pid, name, sky, ip, eleven; 
     // work with the object in 'data' here, E.g: 
     console.log(data.ID, data.siteName); // = 123, 'VEGAS' 
    }).fail(function(error) { 
     alert("Error retrieving details from server"); 
    }); //end ajax call 
} 
+0

Thanks @rory。在定义响应内容类型时,我没有意识到该对象已被解析。即使在设置响应类型时,我也看到了网络上的其他示例使用'jQuery.parseJSON()'。再次感谢。 –

+0

没问题,很乐意帮忙。 –