何时使用 google Gson 的 tojson 方法接受类型作为参数?公共字符串toJson(对象src,类型typeOfSrc)

2023-12-14

我正在尝试使用 Gson 的 toJson API 将我的对象转换为 JSON 字符串。 当我遇到 2 个支持相同功能的不同 API 时。

根据文档 -

公共字符串 toJson(对象 src)

请注意,如果任何对象字段是泛型类型,则此方法可以正常工作,只是对象本身不应该是泛型类型。如果对象是泛型类型,则使用 toJson(Object, Type) 代替.

公共字符串toJson(对象src,类型typeOfSrc)

如果指定的对象是泛型类型,则必须使用此方法。

我正在使用第一个 API,它只接受 Object 作为参数,但是传递通用类型对象,我仍然能够成功获取 JSON 字符串。

Code:

@GET
@Path("/getList")
@Produces(MediaType.APPLICATION_JSON)   
public String getList()     
{       
    Gson gson = new GsonBuilder().create();
    List list = new ArrayList();
    list.add(new Message("kishore", " Bandi "));
    list.add(new Message("test", " values "));
    return gson.toJson(list);   
}

我收到的 XML 响应:

[
    {
        "name": "kishore",
        "text": " Bandi ",
        "dontSend": "Hope not received",
        "iAmEmpty": ""
    },
    {
        "name": "test",
        "text": " values ",
        "dontSend": "Hope not received",
        "iAmEmpty": ""
    }
]

即使我使用参数化类型,响应也是相同的。

Gson gson = new GsonBuilder().create();
        List<String> list = new ArrayList<String>();
        list.add("Kishore");
        list.add("Bandi");
        return gson.toJson(list);

Output:

["Kishore","Bandi"]

那么第二个以类型为参数的API有什么意义呢?


方法toJson(Object src, Type typeOfSrc)当您序列化/反序列化时使用ParameterizedType.

As per docs:

如果您要序列化/反序列化的对象是 ParameterizedType(即包含至少一个类型参数并且可以 是一个数组)那么你必须使用 toJson(Object, Type) 或 fromJson(String, Type) 方法。


示例(摘自文档):

Type listType = new TypeToken<List<String>>() {}.getType();
List<String> target = new LinkedList<String>();
target.add("blah");

Gson gson = new Gson();
String json = gson.toJson(target, listType);
List<String> target2 = gson.fromJson(json, listType);


相关问题ParameterizedType: 参数化类型是什么意思?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

何时使用 google Gson 的 tojson 方法接受类型作为参数?公共字符串toJson(对象src,类型typeOfSrc) 的相关文章

随机推荐