Jersey/Java で REST サーバーを作成していますが、奇妙な動作を発見しました。
オブジェクトの配列をJsonとして返すメソッドがサーバーにあります
@GET
@Path("/files")
@Produces(MediaType.APPLICATION_JSON)
public Object getFiles() throws Exception{
DatabaseManager db = new DatabaseManager();
FileInfo[] result = db.getFiles();
return result;
}
コードが正しく実行され、データがクライアントに返されます (jQuery ajax 呼び出し)。問題は、「結果」配列に 1 つまたは複数の要素がある場合、返されるデータの形式が変わることです。
要素が 1 つの応答:
{"fileInfo":{"fileName":"weather.arff","id":"10"}}
2 つの要素を持つ応答:
{"fileInfo":[{"fileName":"weather.arff","id":"10"},{"fileName":"supermarket.arff","id":"11"}]}
ご覧のとおり、最初のシナリオでは返されるオブジェクトの「fileInfo」プロパティの値はオブジェクトであり、2 番目のシナリオでは値は配列です。私は何を間違っていますか?最初のケースは次のようなものを返すべきではありません:
{"fileInfo":[{"fileName":"weather.arff","id":"10"}]}
つまり、内部に単一のオブジェクトを持つ配列ですか?
クライアント側でこれを検出できることはわかっていますが、非常に醜いハックのようです。
御時間ありがとうございます。