1

以下のようにオブジェクトのリストを表示するjsonがあります。

skillCheckAnswers: [
{
optionId: 6786,
optionText: "Copy constructor",
optionWeight: "1.00"
},
{
optionId: 6787,
optionText: "Friend constructor",
optionWeight: "2.00"
},
{
optionId: 6788,
optionText: "Default constructor",
optionWeight: "3.00"
},
{
optionId: 6789,
optionText: "Parameterized constructor",
optionWeight: "4.00"
}
]

リストに複数のオブジェクトがある限り、これは問題ありません。ただし、リストに1つのアイテムしか含まれていない場合、jsonは次のように表示します。

{
optionId: 6785,
optionText: "Friend class",
optionWeight: "4.00"
}

2番目のJsonはリストとしてではなく、単一のオブジェクトとして指定されていることに注意してください(角括弧[]がありません)。

長さ1のリストを中括弧で出力する方法はありますか?

編集-最初のJSONにforeachを使用できますが、オブジェクトの数が1になると、foreachはエラーを出し始めます。これを処理するために、リストの長さが1または1より大きいかどうかを確認するifelseループがあります。リストの長さが長い場合、これを単一のオブジェクトとして処理します。これはばかげた解決策のようで、簡単な方法があると思います。

これが可能かどうか誰か教えてもらえますか?

4

2 に答える 2

1

次のようなことをする必要があります。

Springコントローラーから:

@RequestMapping(method = RequestMethod.GET, value = "/myquestions")
public @ResponseBody
List<Answer> generateQuestions() {

  List<Answer> answers = new ArrayList<Answer>();
  Answer ans1 = new Answer();
  ans1.setOptionId("6785");
  ans1.setOptionText("Friend class");
  ans1.setOptionWeight("4.00");
  answers.add(ans1);

  return answers;
}

出力は次のとおりです。

[
   {
       "optionId": "6785",
       "optionText": "Friend class",
       "optionWeight": "4.00"
   }
]

これまでのところ、あなたの問題はJSONコンバーターに関連しています。SpringMappingJacksonHttpMessageConverterメッセージコンバーターでテストしました。JSONコンバーターの構成方法については、Springのドキュメントを参照してください。http://static.springsource.org/spring/docs/3.0.0.M3/reference/html/ch18s02.html

于 2012-09-10T16:35:42.313 に答える
0

春を使うとおっしゃいました。Springは、提供するRESTfulAPIのJSON変換を自動的に処理しません。あなたはこのようなものをあなたのconextファイルに置くことができます:

org.springframework.http.converter.json.MappingJacksonHttpMessageConverterを使用して、コンテキストファイルに設定してJSON変換を行うことができます。

次に、Spring MVCの@ResponseBodyアノテーションを使用して、JSON応答をハンドコーディングする必要があるRESTfulサービスを提供できます。

于 2012-09-04T12:38:16.850 に答える