Böyle bir şeye benzeyen bir XML yükü alıyorum (daha kapsamlı bir örnek için şu adrese göz atın: http://api.shopify.com/product.html).XStream - Nesnelerin koleksiyonu olarak kök
<products type="array">
<product>
...
</product>
<product>
...
</product>
</products>
Şimdi şu anda benim kod çalışır, ancak onun gerçekten çok "yanlış" olarak görünmektedir şey yapıyor - yani o List.class ile "ürünler" ilişkilendirir. Yani ilgili kod aşağıdaki gibi görünür:
xstream.alias("products", List.class);
xstream.alias("product", ShopifyProduct.class);
Bu benim git o zaman ne istediğimi değil elbette "ürünlerini", kullandığı xstream örneği ile herhangi bir nesneyi dışa dışında gayet iyi.
ClassAliasingMapper mapper = new ClassAliasingMapper(xstream.getMapper());
mapper.addClassAlias("product", ShopifyProduct.class);
xstream.registerLocalConverter(ShopifyProductResponse.class, "products", new CollectionConverter(mapper));
I: Şu anda değil, hangi çalışmak için aşağıdaki Snippet
xstream.alias("products", (List<ShopifyProduct>).class); // way too easy
Veya olsun:
Ben bir etikete jenerik koleksiyonları harita edebilmek ya istiyorum ShopifyProductResponse sınıfını denemek ve sarmak için ShopifyProductResponse sınıfını yarattı ancak bunun bana şu anlama gelmediğini bildirdi:
com.thoughtworks.xstream.mapper.CannotResolveClassException: products: products 0 com.thoughtworks.xstream.mapper.MapperWrapper.realClass de com.thoughtworks.xstream.mapper.DefaultMapper.realClass (DefaultMapper.java:68) de(MapperWrapper.java:38)
Ben eklerseniz:
xstream.alias("products", List.class);
o zaman ortadan kayboluyor ... bu yüzden mapperwrapper'ın burada tutulmadığı görülüyor - muhtemelen ShopifyProductResponse nesnesini aradığı ve bunun yerine bir liste bulduğu için - gerçekten bilmiyorum.
İyi görünüyor, bunun için etrafta asılı fazladan bir sarmalayıcı nesnesi olması fikrini pek sevmiyorum ama amaçlandığı gibi çalışıyor ve bu noktada gerçekten önemli olan şey - teşekkürler! – Lypheus