【问题标题】:Javascript, replace "," with "." in JSONJavascript,将“,”替换为“。”在 JSON 中
【发布时间】:2022-06-15 05:05:41
【问题描述】:

我有一个无效的 JSON 字符串作为输入:

{
 "Seq_N":66,
 "Uptime":728,
 "Hum":33,500000,
 "Temp (C)":20,129999
}

我无法访问生成无效 JSON 字符串的代码,因此我无法在字符串生成之前修复它

为了使 JSON 字符串有效,我需要将 Hum 和 Temp 字段中的逗号字符替换为点字符,但我还需要保留 JSON 字符串的逗号分隔符(为了不破坏JSON 语法)

有没有人知道一个干净的函数/正则表达式来做到这一点?

提前致谢

【问题讨论】:

  • 您必须发布您拥有的有效 json 字符串。您发布的不是字符串,并且无效
  • 用正则表达式很难做到这一点。如果你有一个像[1,2,3] 这样的数组怎么办?您不能修复发件人以创建有效的 JSON 吗?没有合适的 JSON 库会创建该输出。
  • @Serge 这就是他要解决的问题——他的 JSON 无效,并希望使其有效。
  • 是的,我的 JSON 无效,不幸的是我无法访问发件人,所以我需要一个正则表达式/函数来使 JSON 有效
  • 我现在将编辑问题以使其清楚

标签: javascript json regex replace


【解决方案1】:

你可以像这样使用正则表达式,但是在创建 json 之前编辑值不是更好吗?

var json = `{
 "Seq_N":66,
 "Uptime":728,
 "Hum":33,500000,
 "Temp (C)":20,129999
}`;

json = json.replace(/("(Hum|Temp \(C\))":\d+),/g, '$1.');

console.log(json)

【讨论】:

  • 这假设您可以列出所有具有这些类型值的键。
【解决方案2】:

如果我正确理解了这个问题,下面的代码应该可以完成这项工作:

$(".stat-item").each(function () {
var inner_context = $(this).text();
$(this).text(inner_context.replace(/[\.]+/g, ","));
});

【讨论】:

  • 问题中没有提到jQuery的使用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-18
  • 1970-01-01
  • 2023-02-01
  • 1970-01-01
  • 2020-09-04
  • 2022-09-27
  • 2010-09-18
相关资源
最近更新 更多