java正则表达式将字符串转换为json数组
当我执行rest模板时,我得到的是没有引号的原始json数组。如何将其转换为有效的json数组?我试过用下面的正则表达式
str.replace("([a-zA-Z0-9-]+):([a-zA-Z0-9-]+)g", "\"$1\":\"$2\"")
它没有按预期工作。这是我的json数组
{
items = [
{
VALUE1 = 1,
VALUE2 = v1,
VALUE3 = high temp,
VALUE4 = null
}, {
VALUE1 = 1,
VALUE2 = v1,
VALUE3 = low temp,
VALUE4 = null
}, {
VALUE1 = 1,
VALUE2 = v1.1,
VALUE3 = Not valid,
VALUE4 = null
}
]
}
如何将其转换为有效的json数组,以便正确解析。谢谢
# 1 楼答案
您需要小心:您不希望在数字量(如
1
)或特殊值(如null
)周围放置双引号字符。以下程序分两部分进行更换。首先,它查找字典键并在其周围加引号:这将查找以单词边界开头的单词字符,该边界由0个或多个空格组成,后跟
=
,后跟0个或多个空格,并在单词后面加上一个:
和一个空格第二部分使用正向后向断言和反向前向断言查找字符串字典值:
该值必须以
":
(正向前瞻断言)开头,但不能是[
、{
、null
或数字(反向前瞻断言)中的任何一个。然后,我们将所有内容(包括但不包括下一个逗号、右大括号或换行符)作为要引用的值印刷品: