Не удается переименовать XML и корневой элемент Json весной 3.2.2, Jackson 2.2 и Xstream

Пожалуйста, помогите мне понять, что происходит с именем корневого элемента XML&Json в Spring

в JSon я получаю

{"addressList":
 [{"StreetName":"Boul. Rene-Levesque Ouest","AddressID":1,"StreetNumber":1350},

в XML я получаю

<list>
  <Address2>
  <StreetName>Boul. Rene-Levesque Ouest</StreetName>
  <AddressID>1</AddressID>
  <StreetNumber>1350</StreetNumber>
</Address2>

но я хочу получить

{"AddressList":
 [{"StreetName":"Boul. Rene-Levesque Ouest","AddressID":1,"StreetNumber":1350},

XML:

<AddressList>
  <Address>
  <StreetName>Boul. Rene-Levesque Ouest</StreetName>
  <AddressID>1</AddressID>
  <StreetNumber>1350</StreetNumber>
</Address>

Вот мой код, который я запускаю, используя mvn clean package jetty: run

Address.java

@XmlRootElement(name="AddressList")
@XStreamAlias("AddressList")
@JsonAutoDetect(fieldVisibility=Visibility.ANY, getterVisibility=Visibility.NONE,
                isGetterVisibility=Visibility.NONE)
@JsonRootName(value = "AddressList")
public class Address {

    private String StreetName;
    private Integer AddressID;
    private Integer StreetNumber;
}

AddressController.java

@Controller
@XStreamAlias("AddressList")
public class AddressController {

    @RequestMapping(value="/Address", method=RequestMethod.GET)
    public List<Address> getAllAddress() {

        return returnData(null);
    }

    @RequestMapping(value="/Address({id})", method=RequestMethod.GET)
    public List<Address> getAddressById(@PathVariable String id) {

        return returnData(id);
    }
}

Весна-servlet.xml

<context:component-scan base-package="org.test1.server1" />
<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
    <property name="defaultContentType" value="application/json" />
    <property name="order" value="1" />
    <property name="mediaTypes">
        <map>
            <entry key="json" value="application/json" />
            <entry key="xml"  value="application/xml" />
                            <!-- <entry key="atom" value="application/atom+xml"/> -->
        </map>
    </property>

    <property name="defaultViews">
        <list>
            <!-- JSON View -->
            <bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView" />

            <!-- XML View -->
            <bean class="org.springframework.web.servlet.view.xml.MarshallingView">
                <constructor-arg>
                    <bean class="org.springframework.oxm.xstream.XStreamMarshaller">
                        <property name="autodetectAnnotations" value="true"/>
                    </bean>
                </constructor-arg>
            </bean>
        </list>
    </property>
</bean>

1 ответ

Это может быть не лучшим решением, но вы можете попробовать обернуть ваши адреса в объект контейнера, например:

public class AddressList {
    List<Address> addressList
}
Другие вопросы по тегам