【问题标题】:JSON.stringify() fails to work [duplicate]JSON.stringify() 无法工作[重复]
【发布时间】:2013-08-21 18:10:22
【问题描述】:

当尝试使用 JSON.stringify() 方法将字符串数组转换为我可以传递给 PHP 脚本的 JSON 对象时,stringify() 方法无法返回任何有意义的内容。

这是唯一传递输入的代码。它没有被其他任何东西篡改。

function submitItem() {
 try {
    var item = [];
    item.name = $('.itemText').val();
    item.type = $('.itemType').val();
    item.price = $('.itemPrice').val();
    item.color = $('.itemColor').val();
    item.desc = $('.itemDesc').val();
    item.image = $('.itemImage').val();
    item.giftType = $('.itemGiftType').val();
    item.avail = $('.itemAvail').val();
    item.giftable = $('.itemGiftable').val();
    item.ranking = $('.itemRanking').val();
    item.basicTrack = $('.itemBasic').val();
    item.vetTrack = $('.itemVet').val();
    item.month = $('.itemMonth').is(':checked');
    item.hidden = $('.itemHidden').is(':checked');
    item.id = $('.itemID').val();

     //Left in for confirmation purposes
    var join = [];
    join[0] = 'test';
    join[1] = 'tset';
    console.log( JSON.stringify( join ) );

    console.log(item);
    var JsonItem = JSON.stringify(item);
    console.log( JsonItem );
 } catch (err) {
    console.log(err.message);
 }
}

这会在控制台中产生以下输出:

如您所见,两个 JSON 项的日志都返回为 [],而不是任何类型的任何 JSON 字符串。

我们将不胜感激任何可能发生这种情况的原因。

谢谢。

【问题讨论】:

  • 数组的字符串化基于它们的数字命名属性(12 等),而不是它们的非数字属性(idname 等)。

标签: javascript arrays json stringify


【解决方案1】:

您正在将“项目”初始化为一个数组。您应该将其初始化为普通对象 ({}):

var item = {};

当 JSON 序列化程序看到一个实际的数组时,它只对数字索引的属性进行操作。

【讨论】:

  • 计时器完成后将接受答案。以前没有意识到这一点。谢谢:)
【解决方案2】:

你应该在 stringify 之前将 join 转换为 object

console.log( JSON.stringify( {arr: join}) );

【讨论】:

  • 聪明的回答。想知道为什么没人这么看...
猜你喜欢
  • 2019-11-27
  • 2013-06-21
  • 2012-07-08
  • 2017-04-29
  • 1970-01-01
  • 2017-07-03
  • 2016-10-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多