【问题标题】:Format JSON object in JavaScript在 JavaScript 中格式化 JSON 对象
【发布时间】:2019-03-20 22:32:18
【问题描述】:

我有一个 JSON 对象,其中键和值的格式不同。我想以正确的 JSON 格式对其进行格式化。 PFB JSON 数据

我想在json下面转换

  {
              \"abc\": \"test\",
              \"xyz\": \"test1\",
              \"array\": [
                  {
                      \"path\": [\"test\"],
                      \"output\": {}
                  }
              ]
    } 

如下格式

 {
            "abc": "test",
            "xyz": "test1",
            "array": [
                {
                    "path": ["test"],
                    "output": {}
                }
            ]
   }

我从数据库中获取了这个 JSON,我需要将其转换为有效的 JSON。

我不知道如何格式化这个 JSON。是否有任何正则表达式可以格式化整个 JSON 对象?

【问题讨论】:

  • @Jite 您多久谈论一次 JSON 布尔值或 JSON 数字?几乎有两个常见的“复合 JSON”词——一个 JSON 字符串实际上只是 JSON(因为它已经是一个字符串)和一个 JSON 对象,人们错误地使用它来指代 JSON 或 JavaScript 对象。如果您坚持认为“JSON 对象”是引用作为对象的 JSON 成员的正确方法,那么您就是我见过的第一个这样做的人。当人们谈论 JSON 时,他们已经知道对象是什么成员,通常不会想到 Java 或 Smalltalk。限定符是没用的。
  • @vlaz,如果没有更早的上下文,我可能会包含单词 json 。如果我已经在谈论 JSON,我可能只使用数据类型。我并不是说将数据类型称为 JSON 对象是最好的方法,但我说这是一种有效的说法,在这种情况下说它可能是个好主意,因为它没有明显的上下文。
  • 好的,没问题。 Stack Overflow 上的内容贡献者希望以技术写作为目标,这样帖子对未来的读者来说尽可能易读。 This post 可能是规范参考。因此,我们(和我)要求您在帖子中保留闲聊材料。例如,this edit and rollback 回答您之前的一个问题。
  • 我有时会给出以下建议,这将适用于您的帖子历史记录中的许多项目:请注意,我们更喜欢这里的技术写作风格。我们轻轻地劝阻问候,希望你能帮助,谢谢,提前感谢,感谢信,问候,亲切的问候,签名,请你能帮助,聊天材料和缩写 txtspk,恳求,你多久了被卡住、投票建议、元评论等。只需解释您的问题,并展示您尝试过的内容、预期的内容以及实际发生的情况。
  • @halfer 感谢您的宝贵时间。我同意你的意见。,我会继续前进

标签: javascript node.js json reactjs


【解决方案1】:

var data = `{
              \"abc\": \"test\",
              \"xyz\": \"test1\",
              \"array\": [
                  {
                      \"path\": [\"test\"],
                      \"output\": {}
                  }
              ]
            }`;

console.log(JSON.parse(data));

【讨论】:

  • 谢谢你这在我做 JSON.stringify(JSON.parse(data)); 后工作正常;模板文字有魔力
【解决方案2】:

其实JSON.parse 对那个字符串就足够了

【讨论】:

    【解决方案3】:
    const data = '{\"abc\": \"test\",\"xyz\": \"test1\",\"array\":[{ \"path\":[\"test\"],\"output\":{}}]}';
    
    
    var jsondata = JSON.parse(data);
    console.log('jsondata: ', jsondata);
    
    var regex = data.replace(/\\/g, '');
    console.log('regex: ', regex);
    

    【讨论】:

      【解决方案4】:

      如果您将此数据作为字符串获取 - 只需:

      JSON.stringify(JSON.parse(data))

      答案只是为了大小写,当你有转义"的字符串时,如果有其他一些符号,JSON.parse可能会抛出错误。

      【讨论】:

      • 这正是发生的事情,但在将 JSON 放入模板文字后解析工作
      【解决方案5】:

      是的,您可以使用此正则表达式:\\" 并将捕获的结果替换为 "。如果变量 data 的 json 无效,您可以使用以下代码:

      data.replace(/\\"/g,'"');
      

      这里是正则表达式示例:https://regex101.com/r/qUV7St/1

      【讨论】:

      • @Think-Twice JSON.parse(data) 不适用于无效的 json - 例如试试这个:var data = '{ \\"abc\\": \\"test\\"}'(这将在data 中产生以下字符串:'{ \"abc\": \"test\"}') - 对于此字符串,您将在解析时遇到异常。因此,如果您的数据库返回无效字符串,您需要在解析之前对其进行修复。
      猜你喜欢
      • 1970-01-01
      • 2013-01-16
      • 1970-01-01
      • 2020-11-05
      • 1970-01-01
      • 2015-07-06
      • 2021-10-20
      • 1970-01-01
      • 2018-06-12
      相关资源
      最近更新 更多