在 java 中的 JSON 字符串值中放置缺少的双引号

Put missing double quotes in a JSON string value in java

我有一个 json 字符串,其中所有值都需要用双引号引起来。例如(只是一个示例,它包含许多类似的字段)

    {"Id": "2017",
     "Currency": "AUD",
     "Date": 2020-06-22,
     "InCash": 0.000, 
     "Dep": "ABC90",
     "sumCash": 770.87,
     "AnotherDate": 2020-06-21}

     {"Id": "2017",
     "Currency": "AUD",
     "Date": "2020-06-22",
     "startCash": "0.000", 
     "Dep": "ABC90",
     "sumCash": "770.87",
     "AnotherDate": "2020-06-21"}
        

我正在尝试使用正则表达式,但它破坏了 'Date' 字段。

jsonString.replaceAll(":[ ]*([\w@\.]+)", ": \"\"")

也尝试使用 gson 库,但它只将引号放在日期值上而不是小数值上。

new JsonParser().parse(jsonString).toString()

我到底需要做什么才能实现它?

看看这个

var newS = jsonString.replaceAll(": +((?!\\).*)(!?[,|}] *)", ": \"\"").replaceAll("\\"\\"","\"");

输出

{
  "Id": "2017",
  "Currency": "AUD",
  "Date": "2020-06-22",
  "InCash": "0.000",
  "Dep": "ABC90",
  "sumCash": "770.87",
  "AnotherDate": "2020-06-21"
}

如果 yuior 字符串的其他 JSON 形式(规则)不变,这将适用于
名称 - 值形式。
注意 - 我没有做它可能是 list 中的字符串的部分,但它可行的 alsero

查找:
("\s*\w+\s*"\s*:(?!\s*")(?!\s*\d+\s*(?:,|\]|}))(?!\s*[{\[])(?!\s*(?:true|false|null)\s*(?:,|\]|}))\s*)(.+?)(?=[,}])
替换:
""

demo

查看我完整的 PCRE 正则表达式来解析 JSON 一个非常简单的结构规范。
这里 https://regex101.com/r/H8datD/1 在正则表达式引擎使用递归(函数)之前对 java 不可用。

注意 - 当只需要更改 JSON 的一个方面时,它在其他方面符合规范结构
很容易从我的正则表达式中提取代码以直接找到感兴趣的区域。很简单!

使用下面的正则表达式得到它。

jsonString.replaceAll(": [ ]*([\w@\.-]+)", ": \"\""));

感谢大家的帮助和支持!