如何将其他属性添加到JSON字符串?

时间:2017-01-25 06:09:41

标签: java json gson

import com.google.gson.Gson;
Gson gson = new Gson()    
String s = gson.toJson(obj, type);

我想在Json字符串s上面添加一个额外的属性,这在属性中不存在。我该怎么做?

2 个答案:

答案 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();