替换GSON中的密钥

mm5n2pyu  于 2022-11-06  发布在  其他
关注(0)|答案(4)|浏览(147)

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

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

我把它分析如下-

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

现在,我想用其他内容替换键name,比如firstName,这样得到的JSON对象是-

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

这是可能的吗?我如何实现这一点?

ctrmrzij

ctrmrzij1#

如果你使用Google GSON第三方库com.google.code.gson:gson:2.+,然后根据它的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);

最后,如果你认为你需要使用定制的串行器和解串器,请阅读本文档。
我希望这对你有帮助。

ymdaylpp

ymdaylpp2#

您可以执行以下操作:

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

json_result.remove("name");
bvjveswy

bvjveswy3#

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);

你会得到你想要的

pn9klfpd

pn9klfpd4#

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

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

相关问题