1

SpringのXML&Jsonルート要素の名前で何が起こっているのかを理解するのを手伝ってください

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 を使用して実行するコードは次のとおりです。

アドレス.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);
    }
}

Spring-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>
4

1 に答える 1

0

これは最善の解決策ではないかもしれませんが、アドレスをコンテナー オブジェクトでラップすることもできます。たとえば、次のようになります。

public class AddressList {
    List<Address> addressList
}
于 2013-05-20T20:49:57.400 に答える