簡體   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