使用 gson 序列化 json

Posted

技术标签:

【中文标题】使用 gson 序列化 json【英文标题】:serialize a json using gson 【发布时间】:2022-01-01 15:05:50 【问题描述】:

我正在使用 com.google.gson.JsonObject 将“参数”内的 json 发送到休息端点。


 "parameters": 
   "
     \"customer\" : 
                       \"firstName\": \"Temp\",
                       \"lastName\": \"Temp\",
                       \"emailAddresses\": [\"temp1@temp.com\"],
                       \"address\": 
                                      \"street1\": \"123 W Temp St\",
                                      \"city\": \"Temp\",
                                      \"state\": \"Illinois\",
                                      \"zipCode\": \"61122\"
                       
                    ,
     \"options\" : [\"tv\"]
   "
 

由于参数是一个 json 字符串,我正在尝试这样做:

    JsonObject json = new JsonObject();
    json.addProperty("options", ??);

我不确定如何为客户和选项做这件事。 'options' 是一个 java Set,而 customer 是一个对象。

【问题讨论】:

【参考方案1】:

你可以使用:

Gson gson = new Gson();
String json = "\"parameters\": \"customer\" ... ";
JsonObject jsonObject = gson.fromJson(json, JsonObject.class);
JsonArray options = new JsonArray();
options.add("tv");
jsonObject.add("options", options);
String output = gson.toJson(jsonObject);

【讨论】:

对于客户java对象,我们可以做jsonObject.add("customer", customerObject)

以上是关于使用 gson 序列化 json的主要内容,如果未能解决你的问题,请参考以下文章

使用 GSON 序列化到 JSON 的类是不是应该实现可序列化接口

使用 GSON 序列化时出现“声明多个 JSON 字段命名”错误

使用 GSON 反序列化嵌套的 JSON 字符串

让我们畅通无阻:在 Scala 中使用 GSON 读取 Json

完全理解Gson:Gson反序列化

Gson 在单个 JSON 对象中使用两种 List 类型进行序列化