[解決済み] 1行目2列目でBEGIN_ARRAYを期待したが、BEGIN_OBJECTだった。
2022-02-24 20:44:17
質問
以下のようなエラーが発生します。
<ブロッククオートcom.google.gson.JsonSyntaxException のため、JSONのパースに失敗しました。 java.lang.IllegalStateException: BEGIN_ARRAYを期待していたのに、BEGIN_ARRAYでした。 1行目2列目のBEGIN_OBJECT
サーバーのURL
public static final String SERVER_URL = "https://maps.googleapis.com/maps/api/timezone/json?location=-37.8136,144.9631×tamp=1389162695&sensor=false";
リクエストを実行する
try {
// Create an HTTP client
HttpClient client = HttpClientBuilder.create().build();
HttpPost post = new HttpPost(SERVER_URL);
// Perform the request and check the status code
HttpResponse response = client.execute(post);
StatusLine statusLine = response.getStatusLine();
if (statusLine.getStatusCode() == 200) {
HttpEntity entity = response.getEntity();
InputStream content = entity.getContent();
try {
// Read the server response and attempt to parse it as JSON
Reader reader = new InputStreamReader(content);
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.setDateFormat("M/d/yy hh:mm a");
Gson gson = gsonBuilder.create();
List<Post> postsList = Arrays.asList(gson.fromJson(reader,
Post[].class));
content.close();
for (Post p : postsList) {
System.out.println(p.timeZoneId);
}
} catch (Exception ex) {
System.out.println("Failed to parse JSON due to: " + ex);
}
} else {
System.out.println("Server responded with status code: "
+ statusLine.getStatusCode());
}
} catch (Exception ex) {
System.out
.println("Failed to send HTTP POST request due to: " + ex);
}
ポストクラス
public class Post {
public String timeZoneId;
public Post() {
}
}
どうすればいいのでしょうか?
どのように解決するのですか?
コメントで、返されたJSONがこれだと書いてありますね。
{
"dstOffset" : 3600,
"rawOffset" : 36000,
"status" : "OK",
"timeZoneId" : "Australia/Hobart",
"timeZoneName" : "Australian Eastern Daylight Time"
}
の配列があることをGsonに伝えているのです。
Post
オブジェクトを作成します。
List<Post> postsList = Arrays.asList(gson.fromJson(reader,
Post[].class));
しないんですね。JSONが表すのは、まさに1つの
Post
オブジェクトがあり、Gsonはそれをあなたに伝えているのです。
というコードに変更します。
Post post = gson.fromJson(reader, Post.class);
関連
-
[解決済み] "BEGIN_OBJECTを期待したが、1行目1列目でSTRINGだった"
-
[解決済み] GSONが "Expected BEGIN_OBJECT but was BEGIN_ARRAY "と投げる?
-
[解決済み] トークンのシンタックスエラー、これらのトークンを削除してください [closed].
-
[解決済み] JVMフラグCMSClassUnloadingEnabledは、実際に何をするのですか?
-
[解決済み] パラメータ[変数]の不正な修飾子;finalのみが許可される[closed]。
-
[解決済み] Oracle DB : java.sql.SQLException: 閉じた接続
-
[解決済み] JAVA_OPTIONS、JAVA_TOOL_OPTIONS、JAVA_OPTSの違いについて
-
[解決済み] Javaにおけるシンボリック参照
-
[解決済み] ヘッドリカーシオンとテールリカーシオンの違い [重複]について
-
[解決済み] 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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ストリングビルダー.イコール Java
-
[解決済み] パラメータ[変数]の不正な修飾子;finalのみが許可される[closed]。
-
[解決済み] XX:MaxDirectMemorySizeの既定値
-
[解決済み] なぜJPAには@Transientアノテーションがあるのですか?
-
[解決済み] java.util.concurrent.ExecutionException 例外をどのように処理しますか?
-
[解決済み] javascriptでExpression言語を使うには?
-
[解決済み] mavenのコンパイルに失敗するのはなぜですか?
-
[解決済み] 型の不一致:ArrayListからListへの変換ができない
-
[解決済み] タイプの安全性。アンチェック・キャスト
-
[解決済み] JavaFX 同じパッケージ内なのに「場所が必要です。