【问题标题】:Javascript array to JSON arrayJavascript 数组到 JSON 数组
【发布时间】:2015-07-05 09:33:32
【问题描述】:

我正在使用 JSON 发送 Ajax 数据。我正在从输入文本框中获取逗号分隔的手机号码。并且,我正在将其转换为 javascript 数组。
以下是我的代码:

  var myarray = {};
    myarray = this.model.get('mobileno').split(',');

结果 : myarray : ["123", "4567"];

我将为我的模型设置相同的值,如下所示:

this.model.set('mobileno',JSON.stringify(myarray ));

然后,值变成如下:

console.log(this.model.get('mobileno'));

结果 : mobileno : "["123","4567"]"

所以,我的模型变成了this.model.toJSON();

结果:对象 {mobileno: "["123","4567"]}

到这里为止,一切都是正确的。之后我需要将此模型设置为另一个模型并执行stringfy 会给我如下所示:

 anotherModel.set('data', this.model);

"数据":{"mobileno":"[\"123\",\"456\"]"}

但是,我需要像 "data":{"mobileno":["123","456"]}

您的帮助将不胜感激。

【问题讨论】:

  • 为什么要将数组转回 JSON?
  • 在我的文本框中,我有逗号分隔的手机号码,如 9845098450,9845098451 等。当我从模型中得到这个时,我会得到像这样的“9845098450”、“9845098451”。我需要像 {data:{mobileno:["9845098450","9845098451"]}} 这样的请求,所以我怎么能做到这一点,
  • 所以?为什么需要 JSON?
  • JSON 数组不是字符串。它们实际上是 JavaScript 数组。这是 JSON 的设计目标。因此,如果您需要 JavaScript/JSON 数组的字符串,请等到您完成构建数组后再将其字符串化。

标签: jquery json backbone.js


【解决方案1】:

JSON.stringify 从您的数组中生成一个字符串。这显然不是你想要的。或者正如你所说,这就是你想要的 this.model

到这里一切都是正确的。

但在另一个模型中,您希望将数组设置为不是字符串,而是数组。因为我不知道你在用你的backbone.js做什么,所以我把它写成纯javascript

data = JSON.parse(this.model.get("mobileno"))

应该做的工作。但是你可以设置

data = { "mobileno": myarray }

顺便说一句。如果backbone.js 只是混淆了javascript 对象和数组表示法,我建议根本不要使用它。正如您告诉我们的那样,backbone.js this.model.get('mobileno') 返回一个包含 mobileno 字段的对象。在我的逻辑世界中,anything.get('XY') 应该返回 XY 的值,而不是包含 XY 属性的对象。

【讨论】:

  • 我确实喜欢这个。它的工作。但是我的代码有什么问题?
  • 您的代码没有问题,但您在 javascript 对象、字符串和 JSON 上的查看方式不同。实际上 JSON 只是“Java Script Object Notation”,因此 JSON.stringify(ARG) 只返回一个字符串,其内容可以复制到 javascript 文本中以记下对象的状态。因此,如果您说obj=JSON.stringify(obj),则obj 将是一个字符串,而不管obj 之前是什么。如果obj 是一个字符串,它将是一个字符串,其中包含一个带引号的字符串。
猜你喜欢
  • 1970-01-01
  • 2023-01-14
  • 1970-01-01
  • 1970-01-01
  • 2013-03-07
  • 2011-05-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多