0

我已经搜索了两天,并尝试了我认为的所有可能的事情。我使用 GSON 创建一个 JSON 数组。当我在通过 jquery 将其发送到 Javascript 之前打印出我的 json 字符串时,它看起来像这样:

[{"var1":"hi","var2":"this","var3":"is"}] 

在我看来很好。我尝试通过以下两种方式发送到 js:

String json = gson.toJson(googData, listType);
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(json);

String json = gson.toJson(googData, listType);
<%= json %>

这是我的js代码:

$.getJSON("testgoogle.jsp", function(json) {
    $.each (json, function(k, v) {
        alert(v.val1);
    });
});

很简单吧?我可以将其更改为 $.get 并查看字符串。如果我 alert(k) 它只提醒 0 一次。我怀疑我的 json 字符串传递了一些空格。当我警告从 jsp 返回的任何内容时,它在警告框中的显示低于说警告(“hi”)。你知道在哪里!是在警告框中,“嗨”是怎么在中间的!图片 好吧,当我从 jsp 发送 <%= "hi" %> 时,它低于 !。我将 <%= "hi" %> 一直移动到顶部,所以我的 jsp 看起来像:

<%@page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<%= "hi" %>

正如你所看到的,我正在抓住稻草。这在 ! 的底部返回了“hi”。我的 jsp 中的行越多,我将“hi”向下移动,它在我的警报框中越低。还有,很奇怪的事。如果我把它留在我的jsp的顶部:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

这实际上会在我的警报中打印出来。

如果您需要更多信息,请告诉我。

解决方案: 当密钥为 var1 时,我试图调用 val1。哇!我永远不会把所有这些时间拿回来;)正确的代码与上面的代码相同,除了 val1 应该是 var1。另外,我用 eval(json) 试过了,它仍然可以工作,仅供参考。感谢您尝试帮助大家!

4

3 回答 3

1

$.getJSON()

成功回调传递返回的数据,该数据通常是由 JSON 结构定义并使用 $.parseJSON() 方法解析的 JavaScript 对象或数组。它还传递了响应的文本状态。

您不必自己“解析”字符串,因为它已经被 jQuery 解析了

$.getJSON("testgoogle.jsp", function(json) {
    $.each (json, function(k, v) {
        alert(v.val1);
    });
});
于 2012-06-29T21:38:49.793 回答
0

尝试这个 :

$.getJSON("testgoogle.jsp", function(json) {
$.each (json[0], function(k, v) {
    alert(v);
    });
});
于 2012-06-29T22:40:40.300 回答
0

In $.getJSON the json in function(json) { is alraedy a JavaScript object so you don't eval it

于 2012-06-29T21:37:11.850 回答