この質問は、ここでの私自身の質問から派生しています。
なるほど、期待通りの結果が得られました。JSON応答の特定の部分を抽出し、それを使用してデータベースに保存したい場合、どうすればよいでしょうか?
Jackson JSONパーサーの使用を考えています。チュートリアルを確認しましたが、HTTP リクエストではなくファイルのみを使用しています。
この質問は、ここでの私自身の質問から派生しています。
なるほど、期待通りの結果が得られました。JSON応答の特定の部分を抽出し、それを使用してデータベースに保存したい場合、どうすればよいでしょうか?
Jackson JSONパーサーの使用を考えています。チュートリアルを確認しましたが、HTTP リクエストではなくファイルのみを使用しています。
ジャクソンは素晴らしい選択です。チュートリアルから何を学んだかわかりません。それらを超えて読む必要があるかもしれません。Jackson は、JSON を操作するための優れた Java ライブラリです。
これがあなたが探しているものだと思います。コメントには// or URL, Stream, Reader, String, byte[]
、任意の形式の入力ストリームを使用できることを意味していることに注意してください。使用しているHTTP接続から入力ストリームを取得して解析するだけです。\
実際には、(オブジェクトマッピングを使用して)読んだ可能性のあるチュートリアルでも同じようなことができます。文字列、InputStreamなどのJSONストリームを読み取るためのメソッドは、複数の入力を受け取り、それらを対応するオブジェクトにマップするためにオーバーロードされます。
JSON は単純なプレーン オブジェクトであり、文字列で読み取り可能であるとします。入力ストリームを正しいチャートセットのプレーン文字列に変換するだけで、ジャクソンマッパーで文字列を解析できると思います。
getMapper().readValue(dataStr, Class.class);
Javadocs から見つけることができるURL
の代わりに渡すことができます。File
MyObject ob = new ObjectMapper().readValue(url, MyObject.class);
Gson
優れた json パーサーです。これを使用して、jsonを Java オブジェクトに変換できます。
Gson gson = new Gson();
Foo foo = gson.fromJson("{your json string}", Foo.class);
Foo
クラスがどのように見えるべきかが不明な場合は、いつでもFoo
どのように見えるべきかを作成し、それをシリアル化して json 文字列と比較できます。
Gson gson = new Gson();
gson.toJson(new Foo());
ファイルの代わりにバイトを渡すことができます。ジャクソンAPIをチェックしてください
リクエストからパラメータを取得してバイト配列に変換できますか?
String source = "" +request.getParameter("param1");
byte[] byteArray = source.getBytes("UTF-8");
あなたの応答全体がjsonであり、その一部だけではないと思います。
Genson http://code.google.com/p/genson/を試すことができます。ジャクソンの機能のほとんどに加えて、非常に便利な他の機能があり、ジェンソンも使いやすく、ジャクソンよりも拡張にオープンであろうとしています。これは、Genson のデータバインディング機能を使用してストリームを Java オブジェクトにデシリアライズし、オブジェクトを操作して必要なことを行うソリューションです。
InputStream instream = entity.getContent();
Genson genson = new Genson();
ObjectReader reader = genson.createReader(instream);
DeserializeIntoThisClass myObject = genson.deserialize(DeserializeIntoThisClass.class, reader, new Context(genson));
// and now you can work with this object and store it in a database if you want