【问题标题】:How to remove quotes around numbers to a JSON stringify object?如何将数字周围的引号删除到 JSON 字符串化对象?
【发布时间】:2021-08-11 14:47:19
【问题描述】:

我需要删除之前字符串化的 json 对象中数字之间的双引号。

这是最初的:

[ { "coucou": "Tolu",  "salut": "55",   "tata": "NORMAL", "loulou": "Tolu", "tutu": "NORMAL", "toto": "Tolu", "Baba": "24"   } 
, { "coucou": "TRUE",  "salut": "128",  "tata": "LOW",    "loulou": "Tolu", "tutu": "LOW",    "toto": "TRUE", "Baba": "7"    } 
, { "coucou": "Salut", "salut": "15.7", "tata": "LOW",    "loulou": "Toli", "tutu": "NORMAL", "toto": "toti", "Baba": "-5"   } 
, { "coucou": "Salut", "salut": "-148", "tata": "LOW",    "loulou": "Toli", "tutu": "NORMAL", "toto": "toti", "Baba": "-578" } 
] 

我使用的正则表达式是:

const regex2 = /"-?([0-9]+\.{0,1}[0-9]*)"/g 
json = json.replace(regex2, '$1')

let json = 
`[ { "coucou": "Tolu",  "salut": "55",   "tata": "NORMAL", "loulou": "Tolu", "tutu": "NORMAL", "toto": "Tolu", "Baba": "24"   } 
 , { "coucou": "TRUE",  "salut": "128",  "tata": "LOW",    "loulou": "Tolu", "tutu": "LOW",    "toto": "TRUE", "Baba": "7"    } 
 , { "coucou": "Salut", "salut": "15.7", "tata": "LOW",    "loulou": "Toli", "tutu": "NORMAL", "toto": "toti", "Baba": "-5"   } 
 , { "coucou": "Salut", "salut": "-148", "tata": "LOW",    "loulou": "Toli", "tutu": "NORMAL", "toto": "toti", "Baba": "-578" } 
 ]`

const regex2 = /"-?([0-9]+\.{0,1}[0-9]*)"/g 
json = json.replace(regex2, '$1')

console.log( json)

但我得到的结果是,它也删除了否定运算符,因此它改变了我想要的应用程序的所有结果:

[ { "X0": "Tolu",  "X1": 55,   "X2": "NORMAL", "X3": "Tolu", "X4": "NORMAL", "X5": "Tolu", "X6": 24  } 
, { "X0": "TRUE",  "X1": 128,  "X2": "LOW",    "X3": "Tolu", "X4": "LOW",    "X5": "TRUE", "X6": 7   } 
, { "X0": "Salut", "X1": 15.7, "X2": "LOW",    "X3": "Toli", "X4": "NORMAL", "X5": "toti", "X6": 5   } 
, { "X0": "Salut", "X1": 148,  "X2": "LOW",    "X3": "Toli", "X4": "NORMAL", "X5": "toti", "X6": 578 } 
] 

有人知道如何在使用正则表达式删除数字周围的双引号时保存运算符吗?

【问题讨论】:

  • 那么为什么不将-? 包含在第 1 组中呢? const regex2 = /"(-?\d*\.?\d+)"/g
  • 好的 @WiktorStribiżew 它工作得很好,非常感谢!
  • 您不应该使用正则表达式来执行此操作。您应该在 字符串化之前解决这个问题。
  • 但是"coucou"没有改成"X0"....

标签: javascript json regex


【解决方案1】:

对于对象数组,您可以使用以下代码。

将对象传递给此函数,它将返回更新后的对象,并保留所有值。

function updateJson(objects) {
    for (var i = 0; i < objects.length; i++) {
        var obj = objects[i];
        for (var prop in obj) {
            if (obj.hasOwnProperty(prop) && obj[prop] !== null && !isNaN(obj[prop])) {
                obj[prop] = +obj[prop];
            }
        }
    }
    return obj;
}

【讨论】:

    【解决方案2】:

    您的原始代码应该可以使用

    const regex2 = /"(-?[0-9]+\.{0,1}[0-9]*)"/g 
    json = json.replace(regex2, '$1')
    

    【讨论】:

      【解决方案3】:

      let json = 
      `[ { "coucou": "Tolu",  "salut": "55",   "tata": "NORMAL", "loulou": "Tolu", "tutu": "NORMAL", "toto": "Tolu", "Baba": "24"   } 
       , { "coucou": "TRUE",  "salut": "128",  "tata": "LOW",    "loulou": "Tolu", "tutu": "LOW",    "toto": "TRUE", "Baba": "7"    } 
       , { "coucou": "Salut", "salut": "15.7", "tata": "LOW",    "loulou": "Toli", "tutu": "NORMAL", "toto": "toti", "Baba": "-5"   } 
       , { "coucou": "Salut", "salut": "-148", "tata": "LOW",    "loulou": "Toli", "tutu": "NORMAL", "toto": "toti", "Baba": "-578" } 
       ]`
      
      const regex = /"(-|)([0-9]+(?:\.[0-9]+)?)"/g 
      json = json.replace(regex, '$1$2')
      
      console.log(json)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-04
        • 2018-10-29
        • 1970-01-01
        • 2020-06-10
        • 1970-01-01
        • 1970-01-01
        • 2020-02-08
        • 1970-01-01
        相关资源
        最近更新 更多