我有一個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