0

私はストックorg.jsonライブラリを使用しており、これに精通しています。パフォーマンス上の理由からJacksonライブラリを使用したいのですが、非常に異なるフレームワークのように見えるものに適応するのに苦労しています。次のJSONを取得します。

{"result":[[{"usUserName":"FRED","usActive":true},{"usUserName":"JIM","usActive":true},{"usUserName":"DAVID","usActive":true}]]}

org.jsonを使用して、これを次のように解析しています。

try {
    JSONArray jsonRecordset = response.getJSONArray("result").getJSONArray(0);
    JSONObject jsonFirstRecord = jsonRecordset.getJSONObject(0);
    Log.i("myloginfo", jsonFirstRecord.getString("usUserName"));
} catch (JSONException e) {
    e.printStackTrace();
}

これをジャクソンで再現したいのですが、見た目が大きく違うのでどこに行けばいいのかわかりません。私のJSONは、私が制御できないWebサービスから来ています。上記のデータは説明のためのものであり、実際のデータははるかに大きいため、最高のパフォーマンスが必要です。

4

1 に答える 1

1

通常の方法は、手動でスライスおよびダイシングする代わりに、JSONと互換性のある構造を持つJavaクラス(または複数のクラス)を定義することです。そのようです:

public class Response {
  public UserInfo[][] result;
}
public class UserInfo {
  public String usUserName;
  public boolean usActive;
}

ObjectMapper mapper = new ObjectMapper(); // must reuse for good performance
Response resp = mapper.readValue(jsonInput, Response.class);
// and use 'resp' however you want, now has the expected data.

また、json.orgと同じようにJacksonを使用し、いわゆるツリーモデルを使用することもできます。そのためには、チュートリアルをチェックすることができます。データのオブジェクト構造が適切でない場合(つまり、オブジェクト指向言語から簡単にアクセスできるように設計されていない場合)、または大きなドキュメント内から小さなスニペットのみが必要な場合に、より適切に機能します。

于 2012-09-10T20:45:56.903 に答える