0
我有一個包含SpellingError對象數組的JSON字符串。 我使用Gson將其轉換爲SpellingErrors列表。 解析工作正常(或至少不會拋出任何parsinig錯誤)。但是,當我嘗試迭代我希望的SpellingErrors列表時,我發現它們實際上是StringMaps,並且出現錯誤 「com.google.gson.internal.StringMap無法投射到SpellingError」解析JSON化數組時出錯
任何想法什麼是正確的方式來使用Gson從JSON字符串中拉出我的數組對象?我可以看到數組中有3個表示我的3個對象的StringMap對象。
這裏是有問題的代碼
spellingErrorsJSON = "[{\"context\":\"This is a stmple string\",\"errorIndex\":\"3\"},{\"context\":\"This is a stmple string 2\",\"errorIndex\":\"3\"},{\"context\":\"This is a stmple string 3\",\"errorIndex\":\"3\"}]";
List<SpellingError>spellingErrors;
spellingErrors = m_gson.fromJson(spellingErrorsJSON, List.class);
for(SpellingError spellingError : spellingErrors)
{
if(spellingError.isValid())
{
String spellingMistake = spellingError.getSpellingMistake();
String[] suggestions = Query.lookupSpelling(spellingMistake, LOCALE_US);
}
}
但是,如果我用
m_gson.fromJson(spellingErrorsJSON, SpellingError[].class);
代替然後我得到一個解析異常 「預期BEGIN_OBJECT但BEGIN_ARRAY」
這裏是我的SpellingError PoJo
public class SpellingError
{
private String [] context;
private int errorIndex;
public String[] getContext()
{
return context;
}
public void setContext(String[] context)
{
this.context = context;
}
public int getErrorIndex()
{
return errorIndex;
}
public void setErrorIndex(int index)
{
this.errorIndex = index;
}
}
沒有,沒有工作,讓我上面列出的第二個錯誤... 「java.lang.IllegalStateException:預計BEGIN_ARRAY,但是STRING」:( – MayoMan
請參閱我上面編輯的答案 - 我包括一個完整的測試類,爲我工作。 –