次のような一連のエントリを持つjsonがあります(関連する問題に焦点を当てるために単純化したため、少し冗長に見えます):
{"名前":"ISPC セーシェル","会社":{"名前":"ISPC セーシェル","id":3427640}}
ただし、会社のプロパティが null に設定されている場合もあります。
{"name":"ウェスティン都ホテル京都", "company":null}
私は自分のクラスを次のように定義しました (パブリック アクセス修飾子については申し訳ありませんが、このコードが機能するようになったらこれらを変更します :)) :
class Entry {
public String name=;
public Company company;
public String toString() {
return name + ";" + company;
}
}
class Company {
public String name;
public int id;
public String toString() {
return "Company: " + name;
}
}
私のコードでは、出力と呼ばれる変数に含まれる JSON を逆シリアル化するために gson を使用しようとしています。
while ((output = br.readLine()) != null) {
Gson gson = new Gson();
Reply reply = gson.fromJson(output, Reply.class);
Entry[] entries = reply.entries;
for (int i=0; i < entries.length; i++) {
System.out.print(entries[i]+ "\n") ;
}
}
これは、JSON の最初の例のように company 要素が設定されている場合に正常に機能します。
ISPC セーシェル;会社: ISPC セーシェル
ただし、2 番目の例のように要素が設定されていない場合は、次の出力が得られます。
ウェスティン都ホテル京都; ヌル
私が望むのは、次の出力です。
ウェスティン都ホテル京都; 会社: null