-1

この質問は、ここでの私自身の質問から派生しています。

JavaでJSON応答を文字列に取得しますか?

なるほど、期待通りの結果が得られました。JSON応答の特定の部分を抽出し、それを使用してデータベースに保存したい場合、どうすればよいでしょうか?

Jackson JSONパーサーの使用を考えています。チュートリアルを確認しましたが、HTTP リクエストではなくファイルのみを使用しています。

4

7 に答える 7

2

ジャクソンは素晴らしい選択です。チュートリアルから何を学んだかわかりません。それらを超えて読む必要があるかもしれません。Jackson は、JSON を操作するための優れた Java ライブラリです。

于 2012-10-05T18:39:46.350 に答える
0

これがあなたが探しているものだと思います。コメントには// or URL, Stream, Reader, String, byte[]、任意の形式の入力ストリームを使用できることを意味していることに注意してください。使用しているHTTP接続から入力ストリームを取得して解析するだけです。\

実際には、(オブジェクトマッピングを使用して)読んだ可能性のあるチュートリアルでも同じようなことができます。文字列、InputStreamなどのJSONストリームを読み取るためのメソッドは、複数の入力を受け取り、それらを対応するオブジェクトにマップするためにオーバーロードされます。

于 2012-10-05T18:53:10.983 に答える
0

JSON は単純なプレーン オブジェクトであり、文字列で読み取り可能であるとします。入力ストリームを正しいチャートセットのプレーン文字列に変換するだけで、ジャクソンマッパーで文字列を解析できると思います。

getMapper().readValue(dataStr, Class.class);

于 2012-10-05T19:07:23.957 に答える
0

Javadocs から見つけることができるURLの代わりに渡すことができます。File

MyObject ob = new ObjectMapper().readValue(url, MyObject.class);
于 2012-10-06T18:52:39.370 に答える
0

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());
于 2012-10-05T18:41:31.713 に答える
0

ファイルの代わりにバイトを渡すことができます。ジャクソンAPIをチェックしてください

リクエストからパラメータを取得してバイト配列に変換できますか?

String source = "" +request.getParameter("param1");
byte[] byteArray = source.getBytes("UTF-8");
于 2012-10-05T19:02:28.263 に答える
0

あなたの応答全体が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
于 2012-10-05T21:08:55.950 に答える