web-dev-qa-db-ja.com

Jackson JSONを使用してSpring MVCでJSONを解析する

わかりましたので、私は今しばらくの間これを見てきましたが、これ以上先には行きません。 JavaScriptフロントエンドWebアプリからJSONを受け入れる必要があるSpring MVCサーブレットがあります。 JSONを解析するには、Jacksonを使用する必要があります。 JSON内の値を取得し、JSONに表示される順序でリストに保存する必要があります。 JsonParserおよびJsonNodeオブジェクトでJsonFactoryを使用しようとしましたが、動作させることができます。また、BufferedReaderを開いて、リクエストの本文を1行ずつ繰り返してみましたが、これもまったく取得できません。ここで関連する質問をいくつか見てきましたが、これまでのところ私のために働いたものはありません。

知っている人がここで正しい方向に私を指し示すことができますか、例のあるウェブページは素晴らしいでしょう!

40
MeanwhileInHell

Jacksonのようなマッピングテクノロジーを使用することの全体的なポイントは、オブジェクトを使用できることです(JSONを自分で解析する必要はありません)。

期待するJSONに似たJavaクラスを定義します。

例えばこのJSON:

{
"foo" : ["abc","one","two","three"],
"bar" : "true",
"baz" : "1"
}

このクラスにマッピングできます:

public class Fizzle{
    private List<String> foo;
    private boolean bar;
    private int baz;
    // getters and setters omitted
}

次のようなControllerメソッドがある場合:

@RequestMapping("somepath")
@ResponseBody
public Fozzle doSomeThing(@RequestBody Fizzle input){
    return new Fozzle(input);
}

上記のJSONを渡すと、Jacksonは自動的にFizzleオブジェクトを作成し、返されたオブジェクトのJSONビューをMIMEタイプapplication/json

完全に機能する例については、 私の以前の回答をご覧ください

81

http://json-lib.sourceforge.net/ からjson libを使用しています
json-lib-2.1-jdk15.jar

import net.sf.json.JSONObject;
...

public void send()
{
    //put attributes
    Map m = New HashMap();
    m.put("send_to","[email protected]");
    m.put("email_subject","this is a test email");
    m.put("email_content","test email content");

    //generate JSON Object
    JSONObject json = JSONObject.fromObject(content);
    String message = json.toString();
    ...
}

public void receive(String jsonMessage)
{
    //parse attributes
    JSONObject json = JSONObject.fromObject(jsonMessage);
    String to = (String) json.get("send_to");
    String title = (String) json.get("email_subject");
    String content = (String) json.get("email_content");
    ...
}

その他のサンプルはこちら http://json-lib.sourceforge.net/usage.html

1
denny