我需要使用另一个用户ID模糊原始json字符串中的用户ID。之后,我将构建一个新的json字符串,其中所有内容都相同,但唯一的区别是用户ID不同。
例如,如果我的原始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
来执行此操作。我有以下方法,但不知道如何在其中构建一个带有newUserId
的新json,一切都应该相同?
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
不是正确的方法吗?我应该使用正则表达式吗?
答案 0 :(得分:1)
input.replaceAll("(\"user_id\":\\{\"long\":)\\d+", "$1" + newID)
怎么样?