7

JSON フィードをアイテムごとに解析する方法を知りたいです (例: 各アイテムの URL / タイトル / 説明)。ドキュメント/APIを調べましたが、役に立ちませんでした。

これは私がこれまでに得たものです

import com.google.gson.Gson;
import com.google.gson.JsonObject;

public class ImportSources extends Job {
    public void doJob() throws IOException {
        String json = stringOfUrl("http://feed.test/all.json");
        JsonObject jobj = new Gson().fromJson(json, JsonObject.class);
        Logger.info(jobj.get("responseData").toString());
    }
    public static String stringOfUrl(String addr) throws IOException {
        ByteArrayOutputStream output = new ByteArrayOutputStream();
        URL url = new URL(addr);
        IOUtils.copy(url.openStream(), output);
        return output.toString();
    }
}   
4

4 に答える 4

9

実際の JSON 形式に依存します。実際、JSON 形式に一致するカスタム Javabean クラスを作成するだけです。JSON の任意のフィールドは、、、などの Javabean プロパティとしてマップStringできIntegerますBoolean。任意の配列をListプロパティとしてマップできます。オブジェクトは、別のネストされた Javabean プロパティとしてマップできます。これにより、Java での以降の処理が大幅に簡素化されます。

あなたの側からの JSON 文字列の例がなければ、それがどのように見えるかを推測するだけなので、ここで基本的な例を示すことはできません. しかし、ここに前に同様の回答を投稿しました。役に立つかもしれません。

Gson にはUser Guideもあります。これも役立つ場合があります。

于 2010-01-09T19:38:44.267 に答える
3

Gson 1.4 には、ストリームから複数の JSON オブジェクトを 1 つずつ解析できる新しい API JsonStreamParser があります。

于 2010-04-03T05:28:50.827 に答える
1

json オブジェクトに対応する Java クラスを作成できます。整数、文字列値はそのままマッピングできます。Jsonは次のように解析できます-

 Gson gson = new GsonBuilder().create();
 Response r = gson.fromJson(jsonString, Response.class);

ここに例があります - http://rowsandcolumns.blogspot.com/2013/02/url-encode-http-get-solr-request-and.html

于 2013-02-11T18:51:15.833 に答える
0

GSON がストリーミング/インクリメンタル バインディングを実行できるかどうかはわかりません (できないと思っていました)。

しかし、その特定のライブラリのみを考慮する特定の理由はありますか? 他の Java JSON 処理ライブラリでは、大きなフィードを処理するときに非常に重要な機能であるため、このような処理が可能です (他の回答にいくつかのアイデアがあるリンクを確認できます)。

于 2010-01-10T23:20:33.613 に答える