有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用新值对对象进行jsonify?

我有一些对象具有不同的atributes类型:StringFloatLocalDate等等。要将此对象转换为json String,我使用(com.google.gson.Gson

gson.toJson(object);

但是现在我想给它添加一个String

{
  "warning" : "old",
  --Jsonified Object--
}

如何在不执行样板代码或创建具有新属性和旧属性的新对象的情况下,将特定键值数据添加到对象中


共 (2) 个答案

  1. # 1 楼答案

    在不创建新类或修改当前类的情况下,最简单的方法是使用地图。当然,它仍然需要一些样板,但您可以创建一个方法来完成所有这些

    Gson从已经生成的json开始,您可以创建一个映射,修改这个映射,然后再次创建json

    Gson gson = new Gson();
    Map<String, Object> map = gson.fromJson(json, new TypeToken<Map<String, Object>>(){}.getType());
    
    // here you process the map, e.g. put or remove keys
    map.put("warning", "old");
    
    String json = gson.toJson(myMap);
    

    如果不想从创建的JSON开始,我建议使用jackson object mapper在映射中转换对象,然后处理映射并创建JSON。你应该使用另一个像jackson这样的库,因为Gson没有提供一种将对象转换为地图的方法

  2. # 2 楼答案

    可以使用com.google.gson.JsonObject类添加额外的字段

    JsonObject jsonObject = (JsonObject)gson.toJsonTree(object, YourObjects.class);
    jsonObject.addProperty("warning" , "old"); // add required extra fields
    String json = gson.toJson(jsonObject); // create son string