[解決済み] Jacksonとメッセージ付きのJSONファイルからコンテンツをパースする際の問題 - JsonMappingException -Cannot deserialize as out of START_ARRAY token
2022-05-07 10:57:14
質問
次の.jsonファイルがあるとする。
[
{
"name" : "New York",
"number" : "732921",
"center" : [
"latitude" : 38.895111,
"longitude" : -77.036667
]
},
{
"name" : "San Francisco",
"number" : "298732",
"center" : [
"latitude" : 37.783333,
"longitude" : -122.416667
]
}
]
含まれるデータを表現するために、2つのクラスを用意しました。
public class Location {
public String name;
public int number;
public GeoPoint center;
}
...
public class GeoPoint {
public double latitude;
public double longitude;
}
.jsonファイルからコンテンツをパースするには、次のようにします。 ジャクソン2.2.x で、以下のようなメソッドを用意しました。
public static List<Location> getLocations(InputStream inputStream) {
ObjectMapper objectMapper = new ObjectMapper();
try {
TypeFactory typeFactory = objectMapper.getTypeFactory();
CollectionType collectionType = typeFactory.constructCollectionType(
List.class, Location.class);
return objectMapper.readValue(inputStream, collectionType);
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
を省く限りは
center
プロパティを使用すると、すべてのコンテンツをパースすることができます。しかし、地理座標をパースしようとすると、次のようなエラーメッセージが表示されます。
com.fasterxml.jackson.databind.JsonMappingException.JsonMappingException: のインスタンスをデシリアライズできません.
com.example.GeoPoint out of START_ARRAY token at [Source: android.content.res.AssetManager$AssetInputStream@416a5850; line: 5, column: 25]
(参照チェーン: com.example.Location["center"] を通して)
どのように解決するのですか?
JSON文字列が不正です。
center
は無効なオブジェクトの配列です。置き換える
[
と
]
と
{
と
}
を中心としたJSON文字列で
longitude
と
latitude
で、これらはオブジェクトになります。
[
{
"name" : "New York",
"number" : "732921",
"center" : {
"latitude" : 38.895111,
"longitude" : -77.036667
}
},
{
"name" : "San Francisco",
"number" : "298732",
"center" : {
"latitude" : 37.783333,
"longitude" : -122.416667
}
}
]
関連
-
Java エラー報告 スレッド "main" での例外 java.util.NoSuchElementException
-
java の例外が発生しました java
-
undefinedeclipse エラー。この行に複数のアノテーションが見つかりました: - 文字列を型解決に解決できない
-
アクセス制限です。タイプ 'Application' は API ではありません。
-
javaで非静的な解を静的な参照にすることができない
-
JavaMailのメール送信が失敗するケースとその説明の分析
-
リソースの読み込みに失敗しました。サーバーはステータス500(内部サーバーエラー)で応答しました。
-
IDEA パッケージステートメントの欠落
-
[解決済み] Jackson JSONとHibernate JPAによる無限再帰の問題
-
[解決済み】Jackson JSONマッパーでjava 8 java.timeをシリアライズ/デシリアライズする。
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
undefinedeclipse エラー。この行に複数のアノテーションが見つかりました: - 文字列を型解決に解決できない
-
Dateが型に解決できない問題を解決する
-
Intellij IDEAのエラー「CreateProcess error=2, system could not find specified file」に対する完璧な解決策です。
-
VMの初期化中にエラーが発生しました java/lang/NoClassDefFoundError: java/lang/Object
-
Methodのinvokeメソッド実装のJavaリフレクション
-
SocketTimeoutExceptionの解決方法です。読み込みがタイムアウトした
-
javax.net.ssl.SSLException: 読み取りエラー: ssl=0xdeae5100: システムコール中の I/O エラー、接続 res
-
java 例外。Javaツールの初期化
-
Google Chromeのエラー「Not allowed to load local resource」の解決策について
-
[解決済み】Spring RestTemplateでJSONオブジェクトの一覧を取得する。