如何通过更改其中的一个特定字段来创建新的 json 字符串?
How to create a new json string by changing one particular field in it?
我需要用另一个用户 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
来执行此操作。我有下面的方法,但不确定如何构建一个新的 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
不是正确的方法吗?我应该为此使用正则表达式吗?
input.replaceAll("(\"user_id\":\{\"long\":)\d+", "" + newID)
怎么样?
我需要用另一个用户 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
来执行此操作。我有下面的方法,但不确定如何构建一个新的 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
不是正确的方法吗?我应该为此使用正则表达式吗?
input.replaceAll("(\"user_id\":\{\"long\":)\d+", "" + newID)
怎么样?