替换GSON中的密钥

时间:2015-04-06 10:50:19

标签: json gson

我是GSON的新手。我有一个JSON对象(作为字符串) -

{
"name" : "myName",
"city" : "myCity"
}

我解析了如下 -

JsonParser parser = new JsonParser();
JsonObject json_result = (JsonObject)parser.parse(#TheAboveMentionedStringGoesHere);

现在我想用其他东西替换密钥name,比如firstName,以便生成的JSON对象是 -

{
"firstName" : "myName",
"city" : "myCity"
}

这可能吗?我如何实现这一目标?

4 个答案:

答案 0 :(得分:2)

如果您使用com.google.code.gson:gson:2.+ Google GSON第三方库,然后根据它documentations,您可以在模型类或POJO中使用@SerializedName("commits_url")。 所以你的模型类可能如下所示:

public class Example {

    @SerializedName("first_name")
    String name;

    @SerializedName("city")
    String city;
}

以及何时使用它:

Gist gist = new Gson().fromJson("{
"firstName" : "myName",
"city" : "myCity"
}", Gist.class);

最后如果您认为需要使用自定义的Serialiazer和Deserializer,请阅读this documention
我希望这会对你有所帮助。

答案 1 :(得分:0)

你可以这样做:首先添加然后删除

json_result.add("firstName", json_result.get("name"));

        json_result.remove("name");

答案 2 :(得分:0)

JsonParser parser = new JsonParser();
JsonObject json_result = (JsonObject)parser.parse(#TheAboveMentionedStringGoesHere);

有另一个类似的对象,其构造函数以JsonObject作为参数,但是firstname作为其字段名。

public class json2{
    String firstname;
    String city;
    public json2(JsonObject){
        this.firstname=JsonObject.name;
        this.city=JsonObject.city;
    }

}

json2 j = new json2(JsonObject);
String jsonString = Gson.toJson(j);

你会得到你想要的东西

答案 3 :(得分:0)

以下函数将搜索对象及其所有子对象/数组,并用新值替换该键。它将全局适用,因此在第一次更换后不会停止

function findAndReplace(object, value, replacevalue){
  for(var x in object){
 if(typeof object[x] == 'object'){
  findAndReplace(object[x], value, replacevalue);
 }
 if(object[x] == value){
  object["name"] = replacevalue;
  // break; 
 }
}
}

请查看以下链接

JS