gpt4 book ai didi

java - 何时使用接受类型作为参数的谷歌 Gson 的 tojson 方法? public String toJson(Object src, Type typeOfSrc)

转载 作者:行者123 更新时间:2023-11-30 08:04:29 27 4
gpt4 key购买 nike

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

As per Docs -

public String toJson(Object src)

Note that this method works fine if the any of the object fields are of generic type, just the object itself should not be of a generic type. If the object is of generic type, use toJson(Object, Type) instead.

public String toJson(Object src, Type typeOfSrc)

This method must be used if the specified object is a generic type.

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

代码:

@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);

输出:

["Kishore","Bandi"]

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

最佳答案

方法 toJson(Object src, Type typeOfSrc) 在序列化/反序列化 ParameterizedType 时使用。

根据 docs :

If the object that your are serializing/deserializing is a ParameterizedType (i.e. contains at least one type parameter and may be an array) then you must use the toJson(Object, Type) or fromJson(String, Type) method.


示例(摘自文档):

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 相关的问题:What is meant by parameterized type?

关于java - 何时使用接受类型作为参数的谷歌 Gson 的 tojson 方法? public String toJson(Object src, Type typeOfSrc),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35601355/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com