2

Gson で json を解析していますが、取得しているデータに苦労しています。これは私の管理外の API (openFDA) の一部であるため、それを変更することはオプションではない可能性があります。

これが私が苦労しているjsonです: https://api.fda.gov/device/event.json?search=device.generic_name:generator&limit=10

remedial_action など、一貫性のないフィールドがいくつかあります。時々、次のように出てきます。

"remedial_action": [
        "Recall"
]

そして、このような他の結果では:

"remedial_action": ""

したがって、配列またはプレーン文字列のいずれかです。これを処理する方法はありますか?Gsonで不可能な場合、他のjson解析ライブラリが役立ちますか?

誰かがコードを必要とする場合に備えて、ここにpojo を作成しました。そこから作成されたいくつかのファイルがあり、ここでそれらをスパムしたくありませんでした. 必要に応じて追加できます。

更新:バグは確認されており、修正される予定です。

4

1 に答える 1

2

を使用して、GSON を介して可能TypeAdapterです。

これを行うために使用する最初の手順は次のとおりです。

  1. 配列と文字列を含む POJO を作成します。と呼びましょうRemedialAction
  2. 元の POJO で、新しいクラスの属性を作成します。
  3. を拡張するクラスを作成しますTypeAdapter<RemedialAction>
  4. read()メソッドとメソッドをオーバーライドしwrite()、それらにロジックを作成します。

ただし、これを解析するのは少し難しいはずです。詳細については、このチュートリアルをお読みください。

注:getRemedialAction()有効な戻り値 (配列または文字列) のみを返すようにカスタマイズできます。

于 2015-09-02T21:32:25.030 に答える