我是GSON的新手。我有一个JSON对象(作为字符串) -
{
"name" : "myName",
"city" : "myCity"
}
我解析了如下 -
JsonParser parser = new JsonParser();
JsonObject json_result = (JsonObject)parser.parse(#TheAboveMentionedStringGoesHere);
现在我想用其他东西替换密钥name
,比如firstName
,以便生成的JSON对象是 -
{
"firstName" : "myName",
"city" : "myCity"
}
这可能吗?我如何实现这一目标?
答案 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;
}
}
}
请查看以下链接