2017-03-08 10 views
1

1つの文字列を含む配列としてシリアライズされます私は、次のJavaクラスと春のブートアプリケーションを持っているArrayListの<String>とJavaオブジェクトが単一のStringではなく

class Student{ 
    int id; 
    ArrayList<String> subjectsTaken; 
} 

私はインスタンス別のサービスへのREST呼び出しを行います生徒はPOSTリクエストで実体として(身体内で)渡されます。 subjectsTaken変数に複数のエントリがある場合は、すべて正常に動作します。

subjectsTaken変数に複数のエントリがある場合、POSTリクエストボディが

{ "ID" 以下の通りである:1、 "subjectsTaken":[ "サイエンス"、 "数学"、 "履歴" 1、 "subjectsTaken":subjectsTakenがString

のアレイであるが、subjectsTaken変数に1つだけのエントリが存在する場合

{ "ID" を以下のように、要求体である]}

"science"}

subjectsTakenが原因のデシリアライズは、次のエラーと呼ばれるRESTサービスに障害が発生した。この理由には、単に文字列(および1つの文字列でない配列)

です

はjava.utilでのインスタンスをデシリアライズすることはできませんVALUE_STRINGトークンからの.ArrayList

これに関する任意の点を評価してください。

答えて

1

{ "ID": "科学"]:1、 "subjectsTaken"}。このプロパティは、非直列化が行われている被呼び出しサービスのapplication.propertiesファイルで設定できます。

spring.jackson.deserialization.ACCEPT_SINGLE_VALUE_AS_ARRAY =真

これは、問題を解決するために助けました。

0

ただ1つのサブジェクトでも配列を作成することをお勧めします。この配列を残りのコントローラーに送ります。

私は問題の解決策を見つけたと思う

関連する問題