配列に内部ラッパーオブジェクトがあるという点で、データに問題があります。おそらく、Vendorオブジェクトは、、、を処理するように設計されてidいますがname、company_idこれらの複数のオブジェクトのそれぞれも、単一のプロパティを持つオブジェクトにラップされていますvendor。
Jackson Data Bindingモデルを使用していると仮定しています。
その場合、次の 2 つの点を考慮する必要があります。
1 つ目は、特別な Jackson 構成プロパティを使用することです。Jackson - 1.9 以降、Jackson の古いバージョンを使用している場合、これは利用できない可能性があると思います - provides UNWRAP_ROOT_VALUE. これは、破棄したい最上位の単一プロパティ オブジェクトに結果がラップされている場合のために設計されています。
だから、遊んでください:
objectMapper.configure(SerializationConfig.Feature.UNWRAP_ROOT_VALUE, true);
2 つ目は、ラッパー オブジェクトを使用することです。外側のラッパー オブジェクトを破棄した後でも、Vendorオブジェクトが単一のプロパティ オブジェクトにラップされるという問題が残っています。これを回避するには、ラッパーを使用します。
class VendorWrapper
{
Vendor vendor;
// gettors, settors for vendor if you need them
}
同様に、 を使用する代わりにUNWRAP_ROOT_VALUES、外側のオブジェクトを処理するラッパー クラスを定義することもできます。Vendor正しい,オブジェクトがあると仮定すると、次のようVendorWrapperに定義できます。
class VendorsWrapper
{
List<VendorWrapper> vendors = new ArrayList<VendorWrapper>();
// gettors, settors for vendors if you need them
}
// in your deserialization code:
ObjectMapper mapper = new ObjectMapper();
JsonNode rootNode = mapper.readValue(jsonInput, VendorsWrapper.class);
VendorsWrapper のオブジェクト ツリーは、JSON に似ています。
VendorsWrapper:
vendors:
[
VendorWrapper
vendor: Vendor,
VendorWrapper:
vendor: Vendor,
...
]
最後に、Jackson Tree Modelを使用して、これを に解析しJsonNodes、外側のノードを破棄して、 のそれぞれJsonNodeについて、次のArrayNodeように呼び出します。
mapper.readValue(node.get("vendor").getTextValue(), Vendor.class);
これによりコードが少なくなる可能性がありますが、2 つのラッパーを使用する場合と同じように扱いにくいようです。