質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

2回答

3488閲覧

springbootで複雑なjsonをオブジェクトとして扱うには?

退会済みユーザー

退会済みユーザー

総合スコア0

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2019/04/20 06:34

http://m-shige1979.hatenablog.com/entry/2016/12/26/080000

こちらのページではとあるモデルにマッピングしているようですが、

{ "name": "hogehoge", "date": "20151028", "price": "12000" }

このようなシンプルなjsonであれば、それようのbeanクラスを作成してマッピングすれば良いと思いますが。

例えば、外部のAPIを利用して取得できる複雑なjsonの場合、
beanクラスを作るわけにも行かないと思います(途方もなさすぎて)

このようなjsonはどのようにオブジェクトにすればよいのでしょうか?
または、どのようにjsonを扱うのが良いでしょうか?

利用場面としては、外部APIを使用し、jsonを取得して、その中の一部の抜き出し、単純なbeanクラスにマッピングしたいです。
おそらくマッピングすると言うよりは、セッターなどで値を詰め込んでいく様になるかと思いますが。
このときのベスト・プラクティスみたいなものがあれば教えて下さい。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

めんどくいし仕様変更でデータが増えても厄介だから最近はこの形式で必要なもののみゲッターを追加する

java

1@Getter 2@Setter 3@SuppressWarnings("serial") 4public class User 5 implements OAuth2User, Serializable { 6 7 @JsonAnySetter 8 Map<String, Object> extra = new HashMap<>(); 9 10 @Override 11 public String getName() { 12 return String.valueOf(getExtra().get("id")); 13 } 14 15 @Override 16 public List<GrantedAuthority> getAuthorities() { 17 return Arrays.asList( 18 new OAuth2UserAuthority("USER", getAttributes()), 19 new SimpleGrantedAuthority("USER")); 20 } 21 22 @Override 23 public Map<String, Object> getAttributes() { 24 25 Map<String, Object> attributes = new HashMap<>(); 26 attributes.putAll(getExtra()); 27 return Collections.unmodifiableMap(attributes); 28 } 29 30} 31

投稿2019/04/22 23:39

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

一般的には複雑であってもBeanクラスは作ると思います。
ただし、利用する項目だけ定義したものになるのではないでしょうか。
定義しない項目は捨てられるだけです。

私が業務でやるとしたら取得したい項目を一つ一つTDDで定義しながら、徐々に対応する項目を増やしていく方法をとります。
プライベートでやるとしたら手を抜きたいので、quicktypeで一括変換した後に、不要な項目を削っていきます。

投稿2019/04/20 07:39

nakasho_dev

総合スコア2655

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問