我需要模糊我的原始json字符串中存在的用戶id與另一個用戶ID。之後,我將構建一個全新的json字符串,但唯一的區別是用戶標識不同。如何通過更改一個特定的字段來創建一個新的json字符串?
舉個例子,如果我原來的JSON字符串是這樣的 -
{
"user_id":{"long":1234},
"client_id":{"int":0},
"affinity":[
{
"try":{"long":55793},
"scoring":{"float":0.19}
},
{
"try":{"long":1763},
"scoring":{"float":0.0114}
}
]
}
然後我的新JSON字符串將是 - 唯一的區別是我有一個新的用戶ID,並遠離這一切都是相同。
{
"user_id":{"long":98765},
"client_id":{"int":0},
"affinity": [
{
"try":{"long":55793},
"scoring":{"float":0.19}
},
{
"try":{"long":1763},
"scoring":{"float":0.0114}
}
]
}
我唯一的問題是,我不會有上述格式的JSON字符串只,所以我不能用POJO連載我的JSON字符串,因爲我的JSON字符串都會有不同的格式,但user_id
場總是會就像我所有的json字符串一樣,它也是long
。其他字段可能會有所不同,具體取決於我所擁有的json字符串。
我正在使用Gson
來做到這一點。我有下面的方法,但不知道我怎麼能構建一個新的JSON newUserId
在它和一切都應該是相同的?
private static String creatNewJson(String originalJsonResponse, long newUserId) {
JsonElement jelement = new JsonParser().parse(originalJsonResponse);
JsonObject jobject = jelement.getAsJsonObject();
jobject = jobject.getAsJsonObject("user_id");
// not sure what I should do here to construct a new json with newUserId
}
或Gson
不是正確的方法嗎?我應該使用正則表達式嗎?
你可以試試這個 'jsobject.remove(「long」); jsobject.addProperty(「long」,newValue)' –
然後,我將如何構造完整的json字符串與此jObject? – john
它很容易,你可以使用'GSON.toJson(jsonObject);' http://google-gson.googlecode.com/svn/trunk/gson/docs/javadocs/com/google/gson/Gson.html# toJson(com.google.gson.JsonElement) –