在 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*)(.+?)(?=[,}])
替换:
""
查看我完整的 PCRE 正则表达式来解析 JSON 一个非常简单的结构规范。
这里 https://regex101.com/r/H8datD/1 在正则表达式引擎使用递归(函数)之前对 java 不可用。
注意 - 当只需要更改 JSON 的一个方面时,它在其他方面符合规范结构
很容易从我的正则表达式中提取代码以直接找到感兴趣的区域。很简单!
使用下面的正则表达式得到它。
jsonString.replaceAll(": [ ]*([\w@\.-]+)", ": \"\""));
感谢大家的帮助和支持!
我有一个 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*)(.+?)(?=[,}])
替换:
""
查看我完整的 PCRE 正则表达式来解析 JSON 一个非常简单的结构规范。
这里 https://regex101.com/r/H8datD/1 在正则表达式引擎使用递归(函数)之前对 java 不可用。
注意 - 当只需要更改 JSON 的一个方面时,它在其他方面符合规范结构
很容易从我的正则表达式中提取代码以直接找到感兴趣的区域。很简单!
使用下面的正则表达式得到它。
jsonString.replaceAll(": [ ]*([\w@\.-]+)", ": \"\""));
感谢大家的帮助和支持!