import com.google.gson.Gson;
Gson gson = new Gson()
String s = gson.toJson(obj, type);
我想在Json字符串s上面添加一个额外的属性,这在属性中不存在。我该怎么做?
答案 0 :(得分:1)
你可以使用gson.toJsonTree(..)方法做同样的事情,下面是一个相同的工作示例: -
1.使用toJsonTree(Object src)方法将src对象的等效表示形式作为JsonElements树。
2.调用步骤1中检索到的getAsJsonObject() ON JsonElement,将其作为JsonObject
3.使用addProperty(..)方法在步骤2中的JsonObject中添加属性。
class Employee{
public Employee(String name){
this.name= name;
}
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class GsonTest {
public static void main(String[] args) {
Gson gson = new Gson();
Employee employee=new Employee("Amit");
String s=gson.toJson(employee, Employee.class);
System.out.println(s);
JsonElement jsonElement = gson.toJsonTree(employee);
jsonElement.getAsJsonObject().addProperty("dept", "IT");
s=gson.toJson(jsonElement);
System.out.println(s);
}
/** Output
{"name":"Amit"}
{"name":"Amit","dept":"IT"}
*/
您的代码更改将是: -
JsonElement jsonElement = gson.toJsonTree(obj);
jsonElement.getAsJsonObject().addProperty("new_property", "new_property_value");
s=gson.toJson(jsonElement);
答案 1 :(得分:1)
您可以使用JsonParser并将jsonString转换为JsonElement并添加其他属性。希望它有用。示例代码如下:
Person person = new Person();
person.setName("name1");
person.setSurname("surnma1");
Gson gson = new Gson();
String json = gson.toJson(person, Person.class);
JsonParser parser = new JsonParser();
JsonElement jsonElement = parser.parse(json);
JsonObject jsonObject = jsonElement.getAsJsonObject();
jsonObject.addProperty("property1", "property1 value");
// json2 is your new jsonString with additional property.
String json2 = jsonObject.toString();