如何通过更改其中的一个特定字段来创建新的json字符串?

时间:2015-01-03 19:49:22

标签: java regex json string gson

我需要使用另一个用户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不是正确的方法吗?我应该使用正则表达式吗?

1 个答案:

答案 0 :(得分:1)

input.replaceAll("(\"user_id\":\\{\"long\":)\\d+", "$1" + newID)怎么样?