2

数值是指以下 JSON 中不应包含在双引号中的值。我已经为此编写了一个一次性的解决方法,但是可以重复使用的通用 REReplace() 将是一个很好的帮助。

所以这

{
  "collapse_key" : "demo",
  "delay_while_idle" : true,
  "registration_ids" : ["xyz"],
  "data" : {
    "key1" : "value1",
    "key2" : "value2",
  },
  "time_to_live" : "3"
},

变成这样:

{
  "collapse_key" : "demo",
  "delay_while_idle" : true,
  "registration_ids" : ["xyz"],
  "data" : {
    "key1" : "value1",
    "key2" : "value2",
  },
  "time_to_live" : 3
},
4

1 回答 1

3

这应该有效:

s = reReplace(s, '"([\d.-]+)"', "\1", "ALL")

(其中 s 是您的 JSON 字符串)

  • " 匹配双引号
  • () 表示“记住这一点,以便我以后可以将其引用为 \1
  • \d 表示“一个数字”
  • . 表示小数点
  • - 表示减号
  • + 表示其中一个或多个

请注意,这将匹配诸如“..0-1”之类的非法“数字”,但在您的要求范围内,这可能没问题。可以将正则表达式卷积得更精确,但在这里这样做可能没有任何好处。让我知道这里是否存在误报风险,我可以修改。

或者我想彼得无论如何都会给出更好的答案;-)

于 2012-11-06T09:49:41.720 回答