我有一个包含 SpellingError 对象数组的 JSON 字符串。我使用 Gson 将其转换为 SpellingErrors 列表。解析工作正常(或者至少 ddoes 不会引发任何解析错误)。但是,当我尝试遍历我希望的 SpellingErrors 列表时,我发现它们实际上是 StringMaps,并且我收到错误“com.google.gson.internal.StringMap 无法转换为 SpellingError”
知道使用 Gson 将我的对象数组从 JSON 字符串中拉出的正确方法是什么吗?我可以看到数组中有 3 个 StringMap 对象代表我的 3 个对象。
这是有问题的代码
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”</p>
这是我的拼写错误 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;
}
}