Customer オブジェクトの配列で構成される JSON オブジェクトを解析しようとしています。各顧客オブジェクトには、いくつかのキーと値のペアが含まれています。
{
"Customers":
[
{
"customer.name": "acme corp",
"some_key": "value",
"other_key": "other_value",
"another_key": "another value"
},
{
"customer.name": "bluechip",
"different_key": "value",
"foo_key": "other_value",
"baa": "another value"
}
]
}
複雑なのは、キーが事前にわからないことです。2 つ目の問題は、キーにピリオド (.) が含まれていることです。これは、キーをフィールドにマップしようとしても失敗することを意味します。
私はこれらを Customers クラスにマップしようとしています:
Customers data = new Gson().fromJson(responseStr, Customers.class);
次のようになります。
public class Customers {
public List<Customer> Customers;
static public class Customer {
public List<KeyValuePair> properties;
public class KeyValuePair {
String key;
Object value;
}
}
}
私の問題は、JSON からこのクラスをロードすると、Customers リストに値が入力されますが、それらのプロパティが null になることです。キー名がわからないという事実に GSON を対処させるにはどうすればよいですか?
KeyValuePair クラスの代わりに Customer クラスに HashMap を配置するなど、他のさまざまなアプローチを試しました。