【问题标题】:Why JSON.stringify() don't work correctly [closed]为什么 JSON.stringify() 不能正常工作[关闭]
【发布时间】:2021-10-14 18:51:11
【问题描述】:

我实际上是在使用 nodejs 创建一个 JSON 文件,但是当我使用 JSON.stringify 时。 当我打印它时,我的 Json 对象可以正常工作:

My code

但是当我对我的 json 对象进行字符串化时,我明白了:

What i receive when i print my json object

我的大部分 json 信息不想被保存,我不知道为什么 这是代码:

What i receive when i print my stringified json object

【问题讨论】:

  • 我把我的第一个和最后一个链接颠倒了对不起^^'
  • 代码应该以文本形式发布在此处,而不是图片链接。
  • 对不起,我很少在 stackoverflow 上发布问题,所以我不知道它是如何工作的
  • 另外,在您的代码中,“对象”是一个语法错误。

标签: javascript node.js json


【解决方案1】:

您正在尝试使用“稀疏数组”来存储数据。数组没有明确的方法来使用指定索引处的元素进行实例化。

对象(或地图)会更好地满足您的要求。为了使用一个对象,我修改了你被评论的“帐户”启动代码:

// replace this:
dataObj["accounts"] = [];
// with this:
dataObj["accounts"] = {};

您正在使用的其他代码(例如,使用方括号访问元素)的工作方式相同。您可能应该对正在使用的其他数组进行相同的调整。

如果你有大的空格(你的 UUID 方法肯定会有),稀疏数组在某些符号中可能会变得丑陋。对象或地图不会有这个缺点。

类似代码的示例,使用对象而不是数组:

let dataObj = {};
dataObj["accounts"] = {};
let uuid = 'abcdefghij12344';
dataObj["accounts"][uuid] = {}
dataObj["accounts"][uuid]['active'] = true;
dataObj["accounts"][uuid]['someotherval'] = true;
 
console.log(dataObj);
//outputs:

{ accounts: { abcdefghij12344: { active: true, someotherval: true } } }

let stringified = JSON.stringify(dataObj);
console.log(stringified);

// Outputs:
{"accounts":{"abcdefghij12344":{"active":true,"someotherval":true}}}

let parsed = JSON.parse(stringified);
console.log(parsed);

//Outputs:
{ accounts: { abcdefghij12344: { active: true, someotherval: true } } }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-16
    • 2019-01-04
    • 2020-09-03
    相关资源
    最近更新 更多