【问题标题】:why does my JSON file contain [object Object]?为什么我的 JSON 文件包含 [object Object]?
【发布时间】:2019-03-27 15:10:02
【问题描述】:

我正在使用 sqlite3 和 nodeJS,并查询数据库。我想将查询复制到 json 文件中。我遇到了包含字符串和对象的 json 文件的问题。为什么我的 JSON 文件包含:

[object Object]

这是我的代码:

db.all(sql, [], (err, rows) => {
if(err) { 
  throw err; 
  }rows.forEach((row) => {
      arr_string = JSON.parse(JSON.stringify(row));
      fs.writeFile("tempo.json", arr_string, function(err){
    });

      console.log(arr_string);
  });
});

我希望最终对这些条目使用 ajax 请求。

【问题讨论】:

  • 不解析回对象。只需尝试arr_string = JSON.stringify(row);

标签: javascript sql node.js sqlite


【解决方案1】:

JSON.stringify() 接受 JSON 对象并返回 String
JSON.parse() 接受 String 并返回 JSON 对象

尝试 :

rows.forEach((row) => {
  arr_string = JSON.stringify(row); // 'row' data is converted to String
  fs.writeFile("tempo.json", arr_string, function(err){
});`

【讨论】:

    【解决方案2】:
    arr_string = JSON.parse(JSON.stringify(row));
               //^---------^--- This is parsing the string back to a new object.
    

    您正在将字符串化项目解析为新对象,因此 node.js 文件编写器尝试将对象写入写入流,导致将其解释为 [object Object]

    只需省略JSON.parse,这样流将有效地成为一个字符串实例:

    arr_string = JSON.stringify(row);
    

    此外,您应该汇总结果并只写入一次,或者追加到文件中:

    db.all(sql, [], (err, rows) => {
    if(err) { 
      throw err; 
      }
      let _strings = [];
      const newline_separator = ''; // <-- use whatever separator you need.
      rows.forEach((row) => {
          arr_string = JSON.stringify(row);
          console.log(arr_string);
          _strings.push(arr_string);
      });
      fs.writeFile("tempo.json", _strings.join(newline_separator), function(err){});
    });
    

    既然是json,建议你给我们提供一个更精确的输入,这样我们就能猜出预期的结果是什么。

    【讨论】:

    • 现在这样做的问题是 JSON 文件只写入最后一行(我查询了 4),而且我不能调用 arr_string.caphi,因为它不再是一个对象
    • @DarkLotus 我已经更新了帖子,它应该发布所有行。另外,为什么要访问.caphi?请明确所需的输出和输入,否则很难说你需要做什么。
    • 我需要访问.caphi,以便稍后在网络应用程序中使用它@briosheje
    • 这将是输入:{ caphi: 'bar ii d', en: 'post', dialect: 'FES' } { caphi: 'tima n', en: 'rice', dialect : 'BAS' } { caphi: '2 3 tim d', en: 'depend', 方言: 'BAG' } { caphi: 'ta 3 b aa n', en: 'sick', 方言: 'SAL' }
    • 明确确切您需要完成什么:.caphi 是什么? 在哪里你需要使用它?为什么需要将数据保存到 json?是后来找回的吗?在这一点上,您的问题太宽泛且不清楚,指向当前问题的所有内容都已解决。请编辑您的原始问题并添加所需的输出以及为什么需要专门使用该方法以及在何处使用。
    【解决方案3】:

    JSON.stringify() 方法将 JavaScript 值转换为 JSON 字符串

    arr_string = JSON.stringify(row);
    

    “现在这样做的问题是 JSON 文件只写入最后一行(我查询了 4),而且我不能调用 arr_string.caphi,因为它不再是一个对象”

    Create an empty array(list) and push each result of query in array.And then 
    finally convert it into JSON.
    

    示例代码:

    var rows=[{"holla":"bolla"},{"holla":"bolla1"}];
    console.log(JSON.stringify(rows));
    

    【讨论】:

      【解决方案4】:

      我认为在将 JSON 数据存储到 SQLite 时,您并没有对其进行字符串化。如果您直接将 JSON 数据存储到 SQLite 中,它将像 [object Object] 格式存储。我的建议是在存储在 SQLite 中时对数据进行字符串化。并且在检索时只解析它。那么你的问题就解决了。

      【讨论】:

        【解决方案5】:

        arr_string 实际上不是一个字符串,因为你 JSON.parse d 它。删除JSON.parse 调用。

        【讨论】:

        • 现在这样做的问题是 JSON 文件只写入最后一行(我查询了 4),而且我不能调用 arr_string.caphi,因为它不再是一个对象
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-16
        • 2021-12-16
        • 1970-01-01
        • 1970-01-01
        • 2015-07-03
        • 2013-10-20
        相关资源
        最近更新 更多