我有一个JSON缺失报价java的正则表达式匹配单词不是数字
{
data: [{
timestamp: 1467720920,
val: {
min: 6.90,
max: 7.25,
avg: 7.22
},
temp: {
min: 75.49,
max: 75.49,
avg: 75.49
},
gps: {
lat: 0.707581,
long: -1.941864,
hdop: 2.54,
ttf: 49.4
}
}],
id: A1000049A6248C,
groupId: HU5PPC1E,
rssi: -93,
cell: {
timestamp: 1467731669,
rssi: -93,
lat: 0.735554,
long: -1.974655
}
}
}
我需要把引号所有的话冒号的左侧,所有这一切都没有的话纯粹是数字的结肠右侧。所以我需要引用A1000049A6248C而不是-1.974655。我如何使正则表达式在java中做到这一点? 我试过
json.replaceAll("(\\w+|[+-]([0-9]*[.])?[0-9]+)", "\"$1\"");
这将对每一个字加上引号。我也试着像这样得到一个字,是不是所有的数字json.replaceAll("\\b(?!\\d*)\\b", "\"$1\"");
预期格式
{
"data": [
{
"timestamp": 1463494202,
"val": {
"min": 6.75,
"max": 7.19,
"avg": 7.14
},
"temp_int": {
"min": 54.28,
"max": 54.28,
"avg": 54.28
},
"gps": {
"lat": 0.711407,
"long": -1.460091,
"hdop": 1.42,
"ttf": 42
}
}
],
"id": "A1000049A624D1",
"groupId": "299F7G5AR",
"rssi": -83,
"cell": {
"timestamp": 1463501353,
"rssi": -83,
"lat": 0,
"long": 0
}
}
正则表达式可以完成这项工作,但我必须问,为什么?正则表达式可能非常昂贵。它看起来像你正试图注入正确的格式到你的JSON字符串中,但为什么不是格式正确的第一个地方? – Bryan
其缺失的引号,我需要处理的数字而不是字符串,我可能只是把所有的单词引号,并使用Integer.parseInt() – gary69
我的意思是为什么字符串没有引号已经?你有任何控制字符串是如何格式化的?如果是这样,为什么不使用库[Gson](https://github.com/google/gson)为您生成格式正确的字符串? – Bryan