SpellingError オブジェクトの配列を含む JSON 文字列があります。Gson を使用して、これを SpellingErrors のリストに変換します。解析は正常に機能します (または、少なくとも ddoes は解析エラーをスローしません)。ただし、SpellingErrors のリストになることを望んでいたものを反復しようとすると、実際には StringMaps であることがわかり、「com.google.gson.internal.StringMap を SpellingError にキャストできません」というエラーが表示されます。
JSON文字列からオブジェクトの配列を引き出すためにGsonを使用する正しい方法は何ですか? 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 でした」という解析例外が発生します。</p>
ここに私の 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;
}
}