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

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

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

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

Q&A

解決済

1回答

2191閲覧

jacksonによるListの文字列出力について

_ponsan

総合スコア9

Java

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

1グッド

0クリップ

投稿2018/07/27 15:56

前提・実現したいこと

jacksonを使用してJavaオブジェクトをJSON文字列に出力する際に、
該当のソースコードを実行して以下の[出したい出力]を出したい場合、
アノテーションだけで対応できるでしょうか。

[出したい出力] { "fugaList": [ { "fuga": { "prop1": "AAAA", "prop2": "BBBB" } }, { "fuga": { "prop1": "XXXX", "prop2": "YYYY" } } ] } [実際の出力結果] { "fugaList": [ { "prop1": "AAAA", "prop2": "BBBB" }, { "prop1": "XXXX", "prop2": "YYYY" } ] }

該当のソースコード

Java

1public class Hoge { 2 @JsonProperty("fugaList") 3 private List<Fuga> fugaList; 4 5 public Hoge(List<Fuga> fugaList ) { 6 this.fugaList=fugaList; 7 } 8 9 public List<Fuga> getFugaList() { 10 return fugaList; 11 } 12} 13 14public class Fuga { 15 @JsonProperty("prop1") 16 private String prop1; 17 @JsonProperty("prop2") 18 private String prop2; 19 20 public Fuga(String prop1, String prop2) { 21 this.prop1=prop1; 22 this.prop2=prop2; 23 } 24 25 public String getProp1() { 26 return prop1; 27 } 28 29 public String getProp2() { 30 return prop2; 31 } 32} 33 34public class Test { 35 public static void main(String[] args) throws Exception{ 36 Fuga fuga1 = new Fuga("AAAA", "BBBB"); 37 Fuga fuga2 = new Fuga("XXXX", "YYYY"); 38 39 List<Fuga> fugaList = new ArrayList<Fuga>(); 40 fugaList.add(fuga1); 41 fugaList.add(fuga2); 42 43 Hoge hoge = new Hoge(fugaList); 44 ObjectMapper mapper = new ObjectMapper(); 45 System.out.println(mapper.writeValueAsString(hoge)); 46 } 47} 48
A-pZ👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

@JsonTypeInfo@JsonSubTypesでできました。
正直、靴の上から足を掻いている気分です・・・

java

1import com.fasterxml.jackson.annotation.JsonProperty; 2import com.fasterxml.jackson.annotation.JsonSubTypes; 3import com.fasterxml.jackson.annotation.JsonTypeInfo; 4 5@JsonTypeInfo(include = JsonTypeInfo.As.WRAPPER_OBJECT, use = JsonTypeInfo.Id.NAME) 6@JsonSubTypes(@JsonSubTypes.Type(value = Fuga.class, name = "fuga")) 7public class Fuga { 8 () 9}

投稿2018/08/16 13:52

ikemo

総合スコア332

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

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

A-pZ

2018/08/17 01:35

great d(・ω・
_ponsan

2018/08/31 14:07

ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問