6

マップを Web アプリケーションに戻す必要があります。

マップを JSONObject にカプセル化することに慣れています

http://json.org/java/

しかし、私はSpringとJackson Hausを使用しているので.

pojo を維持する簡単な方法はありますか? MAP に注釈を付けることができますか?

4

2 に答える 2

6

ジャクソンにはcom.fasterxml.jackson.core.JsonNode、および のような特定のサブタイプがありObjectNodeます。これらの形式はいわゆるTree Modelであり、Jackson で JSON を処理する 3 つの方法の 1 つです。他の一部のライブラリ ( などorg.json) は、この方法のみを提供します。

JsonNodeしたがって、代わりに使用できるはずです。org.jsonライブラリを使用する意味はほとんどありません。遅く、API が古くなっています。

または、を使用java.util.Mapしてそれを返すこともできます。Jackson は、標準Listの s、Maps、およびその他の JDK タイプを問題なく処理できます。

于 2013-09-25T17:39:11.287 に答える
2

出力を操作する必要がある場合、つまり、オブジェクトのすべてのフィールドを提供したくない場合は、JSonArray を使用できます。

@RequestMapping(value = "/api/users", method = RequestMethod.GET)
public
@ResponseBody
String listUsersJson(ModelMap model) throws JSONException {
    JSONArray userArray = new JSONArray();
    for (User user : userRepository.findAll()) {
        JSONObject userJSON = new JSONObject();
        userJSON.put("id", user.getId());
        userJSON.put("firstName", user.getFirstName());
        userJSON.put("lastName", user.getLastName());
        userJSON.put("email", user.getEmail());
        userArray.put(userJSON);
    }
    return userArray.toString();
}

ここの例を使用してください

それ以外の場合は、依存関係に jackson を追加し@ResponseBody、応答でアノテーションが付けられたコントローラー メソッドを設定すると、JSON に自動的にマップされます。簡単な例については、こちらを確認してください。

于 2013-09-24T11:18:06.887 に答える