【问题标题】:create javascript array in json response in Java在Java中的json响应中创建javascript数组
【发布时间】:2011-08-02 18:16:36
【问题描述】:

我有一个 servlet,我在其中发送 JSON 响应(返回到 javascript)。例如,我的回复看起来像

{
    "responseStr":"1,5,119.8406677,7,7,116.5664291,10,10,116.6099319,20,10,117.2185898,25,3,115.2636185"
}

现在正在发生的事情是,我正在 servlet 中收集数据(上面的数字),并将其作为带有逗号分隔值的字符串在 JSON 响应中发送。当这个响应到达前端时,所有这些数字都必须放在一个 javascript 数组中(我在其中做进一步的逻辑)。目前我正在这样做

var res = JSON.parse(REQ.responseText);         
var myArr = res.responseStr.split(',');

我的想法是第二行(我使用 split() 的地方)导致我的应用程序出现瓶颈。上面例子中的几个数据点不是问题,但是当我有数千个数据点时它就会成为问题。

所以我的问题是,当我在 servlet 中创建响应时,有没有一种方法可以将响应创建为 javascript 数组,这样我就不必使用 split() 了? 有没有更好的方法来实现上述将响应转换为 javascript 数组的任务?

【问题讨论】:

    标签: javascript arrays json servlets response


    【解决方案1】:

    如果你将responseStr作为一个数组发送,当JSON解析它时,它将是一个数组。因此,您可以将 JSON 响应发送为“[1,2,3,4,5,6,7]”等等,当您进行 JSON.parse 时,它​​将返回一个数组。

    为了更清楚一点:

    var arr = [1,2,3,4,5];
    arr = JSON.stringify(arr); // "[1,2,3,4,5]" -- String
    arr = JSON.parse(arr); // [1,2,3,4,5] -- Array
    

    【讨论】:

      【解决方案2】:

      在您的响应中设置 content-type JSON/application 并发送 JSON 数组

      {
          "responseStr":["1","5","119.8406677","7","7","116.5664291","10","10","116.6099319","20","10","117.2185898","25","3","115.2636185"]
      }
      

      然后在您的 JavaScript 中,您可以简单地使用 (reference):

      var myArray = responseJSONObject.responseStr;
      

      您可以将JSON.js 用于各种任务。

      【讨论】:

        【解决方案3】:

        这是一个很好的问题。 JSON 可以像返回数组一样简单

        { "responseStr": [[1], [2], [3], [4] }

        酷!

        双引号不是必需的,除非您希望它们作为字符串。

        还有一点,你也可以拥有多维数组!

        { "responseStr": [[1,10], [2,20], [3,30], [4,40]] }

        这个链接是一个很好的参考:

        http://json.org/fatfree.html

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-04-30
          • 1970-01-01
          • 2020-01-12
          相关资源
          最近更新 更多