2017-01-07 15 views
1

RESTfulサービスからJSONデータを解析する必要があります。Javaオブジェクトを使用しないJSON構文解析

サービスコンシューマは、WSDLからスタブとスケルトンを作成できるSOAPベースのサービスとは異なり、RESTfulサービスの場合、サービスコンシューマは未処理のJSON文字列を取得します。

サービスコンシューマがJSON構造に一致するJavaオブジェクトを持っていないので、我々はGSONのようなJavaマッパーにJSONを使用することができません、ジャクソンなど

一つの別の方法は、JsonPathのようなパーサを使用することですJSON構造をトラバースしてデータを読み込むのに役立つ最小限のJSONなどがあります。

JSONデータを読み取る方法はありますか?

+0

カスタムマッピングを作成するのはどれほど難しいのですか? GsonとJacksonはDTOマッピングが動作する必要はありません。代わりに、JSONを 'java.util.Map'インスタンスにマップすることもできます。 –

答えて

3

ジャクソンのofficial docsには、JavaからJSONのドキュメントを解析する3つの方法があります。最初の2つは"JSON構造と一致するJavaオブジェクト"を必要としません。まとめ:

  • ストリーミングAPI(別名 "インクリメンタル解析/世代")離散イベントとしてJSONの内容を読み取り、書き込みます。
  • ツリーモデルは、JSONドキュメントのメモリ内ツリー表現を変更することができます。 ObjectMapperは、JsonNodeノードで構成されるツリーを構築できます。
  • データバインディングは、JSONとPOJOを、プロパティのアクセシビリティ規則またはアノテーションに基づいて変換します。あなたは、任意のJava Beanタイプにしてから変換する(同様にを結合フルデータによるJavaマップ、リスト、文字列、数値、ブール値とヌル
  • にしてから変換するを結合単純なデータで
    1. 前述した "シンプル" タイプ)

別のオプションは、JSON文書からのJava Beansの生成することです。あなたは走行距離が異なる場合があります。また、生成されたファイルを変更する必要があります。あなたが試すことができ、その目的のために、少なくとも5つのオンラインツールがあります。

は、IDEのプラグインもあります。あなたは使うことができます。例えば、これはIntellijのためのものですhttps://plugins.jetbrains.com/idea/plugin/7678-jackson-generator-plugin

0

GSONはオブジェクトのない作業もサポートしています。

問題は、このように作業が非常に不便で、代わりにオブジェクトを作成する方が良いということです。

ジャクソンは全く同じ問題を持ち、直接的なjson読み込み/作成には極端に不便です。代わりにPOJOを使用するためのすべてのチュートリアルアドバイス。

唯一の便利な方法は、Groovyを使用することです。 GroovyはJava上のエンベロープとして機能し、Javaコードを記述し、必要に応じてGroovy演算子を使用するだけです。そして、JSONやXMLの読み込みと作成では、Groovyは、Javaがすべてのライブラリを掛け合わせて、比類ないほど強力です。すでに用意されているPOJOの他のツリー構造によってすでに準備されているよりはるかに便利です。

関連する問題