繁体   English   中英

如何将JSON数组转换为ArrayList?

[英]How do I convert a JSON array to an ArrayList?

我从一个看起来像这样的数据库中获取一个字符串

[{"messageContent":"Good morning Christine! My name is Oso, it\u0027s 
beary nice to meet you 
:3","msgType":"MSG_TYPE_RECEIVED","statusCode":0,"timeString":"10:31"}, 
{"messageContent":"Good morning Christine! My name is Oso, it\u0027s 
beary nice to meet you 
:3","msgType":"MSG_TYPE_RECEIVED","statusCode":0,"timeString":"10:31"}

它以ArrayList开头,但是我必须将其转换为字符串以存储在数据库中。

我需要将其转换回去。 我本来打算使用此功能,但似乎不起作用。

public static ArrayList<ChatMessage> fromString(String value) {
    Type listType = new TypeToken<ArrayList<String>>() {}.getType();
    return new Gson().fromJson(value, listType);
}

当我尝试运行该函数时出现此错误。

 com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected a string but was BEGIN_OBJECT at line 1 column 3 path $[0]

这是因为您尝试创建StringArrayList ,但是您拥有对象,而不是JSON中的字符串。 尝试更改此行:

Type listType = new TypeToken<ArrayList<String>>() {}.getType();

对于这样的事情:

Type listType = new TypeToken<ArrayList<ChatMessage>>() {}.getType();

假设Gson知道如何反序列化ChatMessage类,那应该可以工作。

  1. 您的数据库字符串末尾缺少JSON数组右括号[ ]

  2. gson类型参数错误。 您需要一个ArrayList<ChatMessage>但是您使用了ArrayList<String>

更换

Type listType = new TypeToken<ArrayList<String>>() {}.getType();

Type listType = new TypeToken<ArrayList<ChatMessage>>() {}.getType();  

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM