使用改装时我遇到的问题是,当我有这个清单时:
List<String> items = new ArrayList<String>();
items.add("item1");
我用gson转换器对其进行了改造,然后我将其作为输出:
{ "item1" }
当我有这个时:
List<String> items = new ArrayList<String>();
items.add("item1");
items.add("item2");
然后我得到
[ "item1", "item2" ]
我能做些什么吗?我尝试编写这样的自定义提供程序:
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(List.class, new List1ElementAsArrayAdapter());
使用List1ElementAsArrayAdapter:
public class List1ElementAsArrayAdapter implements JsonSerializer<List<?>> {
@Override
public JsonElement serialize(List<?> list, Type type, JsonSerializationContext jsonSerializationContext) {
if (list.size() == 1) {
// Don't put single element lists in a json array
return new Gson().toJsonTree(list.get(0));
} else {
return new Gson().toJsonTree(list);
}
}
}
但这不起作用
答案 0 :(得分:0)
我没有找到一个好的解决方案,所以我决定改变我正在做的事情。
我现在正在创建一个JSONArray对象并将所有键添加到该对象中,而不是仅创建String类型的List。
示例:
JSONArray ids = new JSONArray();
ids.put("item1");
这正确地回复了我想要的东西。希望这有助于其他与我有同样问题的人。