[解決済み] レトロフィット BEGIN_OBJECTと思ったらBEGIN_ARRAYだった。
2023-06-10 21:32:25
質問
私はJSONのパースにかなり慣れていて、SquareのRetrofitライブラリを使っているのですが、この問題にぶつかりました。
私はこのJSONの応答をパースしようとしています。
[
{
"id": 3,
"username": "jezer",
"regid": "oiqwueoiwqueoiwqueoiwq",
"url": "http:\/\/192.168.63.175:3000\/users\/3.json"
},
{
"id": 4,
"username": "emulator",
"regid": "qwoiuewqoiueoiwqueoq",
"url": "http:\/\/192.168.63.175:3000\/users\/4.json"
},
{
"id": 7,
"username": "test",
"regid": "ksadqowueqiaksj",
"url": "http:\/\/192.168.63.175:3000\/users\/7.json"
}
]
以下は私のモデルです。
public class Contacts {
public List<User> contacts;
}
...
public class User {
String username;
String regid;
@Override
public String toString(){
return(username);
}
}
私のインターフェイス
public interface ContactsInterface {
@GET("/users.json")
void contacts(Callback<Contacts> cb);
}
my successメソッドです。
@Override
public void success(Contacts c, Response r) {
List<String> names = new ArrayList<String>();
for (int i = 0; i < c.contacts.size(); i++) {
String name = c.contacts.get(i).toString();
Log.d("Names", "" + name);
names.add(name);
}
ArrayAdapter<String> spinnerAdapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, names);
mSentTo.setAdapter(spinnerAdapter);
}
成功メソッドで使用すると、エラーが発生します。
1行目 column2 で BEGIN_OBJECT を期待したが、BEGIN_ARRAY だった。
何が間違っているのでしょうか?
どのように解決するのですか?
今現在、あなたはレスポンスがこのようにフォーマットされているように解析しています。
{
"contacts": [
{ .. }
]
}
例外は、ルートでオブジェクトを期待しているのに、実際のデータは配列であるという点で、これを教えてくれます。これは、型を配列に変更する必要があることを意味します。
最も簡単な方法は、コールバックの直接の型としてリストを使用することです。
@GET("/users.json")
void contacts(Callback<List<User>> cb);
関連
-
[解決済み] "BEGIN_OBJECTを期待したが、1行目1列目でSTRINGだった"
-
[解決済み] GSONが "Expected BEGIN_OBJECT but was BEGIN_ARRAY "と投げる?
-
アノテーション「@Retention」の役割
-
Java appears タイプEを囲むインスタンスがアクセスできない。
-
maven レポート エラー 解決不可能な親POM
-
Javaがエラーで実行される、選択が起動できない、最近起動したものがない
-
CAS 5.1.8でhttpをサポートし、認証されていない認可サービスエラーのプロンプトが表示される問題を解決した。
-
[解決済み] JSONPとは何か、なぜ作られたのか?
-
[解決済み] アクティビティで本来追加されるウィンドウが流出した
-
[解決済み] Eclipseが起動できない - Javaは起動したが終了コード=13を返した
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
undefined[sonar] sonar:デフォルトのスキャンルール
-
Eclipse の問題 アクセス制限。タイプ 'jfxrt' はAPI解決されていません。
-
java.sql.SQLException: executeQuery()でデータ操作文を発行できません。
-
Collections.sortがdoubleでソートできない問題を完璧に解決する。
-
メモ帳でJavaプログラムをコンパイルして実行すると、Could not find or load main class ...というエラーが表示される。解決方法
-
Uncaught ReferenceError: は定義されていません。
-
-bash: java: コマンドが見つからない 解決方法
-
Java Runtime Environmentを継続するためのメモリが不足しています。
-
git pull appears現在のブランチに対するトラッキング情報がありません。
-
linux ant Resolve error: main class not found or couldn't be loaded org.apache.tools.ant.launcher.