【发布时间】:2020-06-25 14:45:21
【问题描述】:
我有一个 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"}
我正在尝试使用正则表达式,但它破坏了“日期”字段。
jsonString.replaceAll(":[ ]*([\\w@\\.]+)", ": \"$1\"")
也尝试使用 gson 库,但它只将引号放在日期值上而不是十进制值上。
new JsonParser().parse(jsonString).toString()
我需要做什么才能实现它?
【问题讨论】:
-
字符串从何而来?鉴于这不是有效的 JSON,您是否可以尝试从源头修复它而不是稍后应用“修复”?除此之外,通过这种方式,发起者可以选择是否某些东西不以字符串形式结束——例如,0.000 和 770.87 可能故意为非字符串值(而 2020-06-22 是错误的)。
-
@JonSkeet 它是一个来自 kafka 主题的固定格式 Avro 对象,KStream
-
我对 Avro 知之甚少,但是有什么东西可以将它从 Avro 格式转换为 JSON 吗?因为如果是这样,它显然做得很糟糕,我认为这值得作为一个错误报告。
-
不知道它叫什么JSON,它真的是一个非常简单的结构,对象{}包含键值对,其中值可以是字符串,或数字,或数组(值列表),或对象,或真、假或空。在 PCRE 中为其编写正则表达式非常简单,但 java 没有函数调用(即递归)。但是对于 yuior 所做的事情,不解析 JSON,不需要递归。说
JSON大错特错了,一些厄运者没有opshuns,而是一个真正的PARSER,但是一个笑话导致它如此简单
标签: java json regex string gson