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

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

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

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Java

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

Q&A

解決済

1回答

1461閲覧

JacksonでRootが配列のJsonをシリアライズする方法

rx5rra

総合スコア27

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Java

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

1グッド

1クリップ

投稿2018/01/29 09:50

お世話になっております。

現在Jacksonを使用し、BeanをJsonにしてクライアントへ返すようなロジックを組んでおります。
この時、オブジェクト配列のルートのFieldを無しにしたいのですが、可能でしょうか?


Bean1

java

1public class Bean1 { 2 @JsonProperty(ID); 3 private String id; 4 5 @JsonProperty(NAME); 6 private String name; 7 8 getter... 9 setter... 10}

Bean2

java

1public class Bean2{ 2 private ArrayList<Bean1> ary = new ArrayList<Bean1>(); 3 4 getter... 5 setter... 6}

シリアライザ

java

1public static String sli(Object obj){ 2 ObjectMapper mapper = new ObjectMapper(); 3 try { 4 mapper.configure(SerializationFeature.WRITE_NULL_MAP_VALUE, false); 5 String jsonString = mapper.writerWithDefaultPrettyPrinter().writeValueAsString(obj); 6 return jsonString; 7 } catch(JsonProcessingException e){ 8 ..... 9}

このまま出力すると、この様な形で出てしまうのですが、

Json

1{ 2 "Bean2" : [{ 3 "ID": "ID1", 4 "NAME": "名前1" 5 },{ 6 "ID": "ID2", 7 "NAME": "名前2" 8 },{ 9 "ID": "ID3", 10 "NAME": "名前3" 11 }] 12}

これをこの様にルートを配列にしたいのですが、これはJacksonで可能でしょうか?

Json

1{ 2 [{ 3 "ID": "ID1", 4 "NAME": "名前1" 5 },{ 6 "ID": "ID2", 7 "NAME": "名前2" 8 },{ 9 "ID": "ID3", 10 "NAME": "名前3" 11 }] 12}
A-pZ👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

Jacksonでシリアライズするときの「ルート要素を追加する・しない」は、出力するオブジェクトをラップする・しないの設定ですので、Bean2をそのまま出力することは、Bean2の名前がそのまま出ます。

素直に、Bean2の子要素である配列をシリアライズすると良いでしょう。

投稿2018/01/29 12:52

A-pZ

総合スコア12011

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

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

rx5rra

2018/01/30 00:47

ありがとうござます! 比較的単純なことなのに全く出てきませんでした・・・。
A-pZ

2018/01/30 03:56

あるあるです d(ω・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問