0

WSDL から Web サービス クライアントを作成しています。SOAP 呼び出しから取得した XML を JSON オブジェクト (RESTful WS として) に変換したいと考えています。

GSON を試してみましたが、TypeAdapter が必要です。約 75 個のオブジェクトがあるため、より一般的なものが必要です。Jackson も使用しましたが、XML として変更せずに送信するだけです。

NetBeans (wsimport) は多くのクラスを生成します。その例を以下に示します。これを JSON オブジェクトに変換するにはどうすればよいですか?

  import javax.xml.bind.JAXBElement;
  import javax.xml.bind.annotation.XmlAccessType;
  import javax.xml.bind.annotation.XmlAccessorType;
  import javax.xml.bind.annotation.XmlElement;
  import javax.xml.bind.annotation.XmlElementRef;
  import javax.xml.bind.annotation.XmlType;


  @XmlAccessorType(XmlAccessType.FIELD)
  @XmlType(name = "addressData", propOrder = {
      "addressLine1",
      "addressLine2"
  })
  public class AddressData {

      @XmlElement(required = true)
      protected String addressLine1;
      @XmlElementRef(name = "addressLine2", type = JAXBElement.class, required = false)
      protected JAXBElement<String> addressLine2;

      /**
       * Gets the value of the addressLine1 property.
       * 
       * @return
       *     possible object is
       *     {@link String }
       *     
       */
      public String getAddressLine1() {
          return addressLine1;
      }

      /**
       * Sets the value of the addressLine1 property.
       * 
       * @param value
       *     allowed object is
       *     {@link String }
       *     
       */
      public void setAddressLine1(String value) {
          this.addressLine1 = value;
      }

      /**
       * Gets the value of the addressLine2 property.
       * 
       * @return
       *     possible object is
       *     {@link JAXBElement }{@code <}{@link String }{@code >}
       *     
       */
      public JAXBElement<String> getAddressLine2() {
          return addressLine2;
      }

      /**
       * Sets the value of the addressLine2 property.
       * 
       * @param value
       *     allowed object is
       *     {@link JAXBElement }{@code <}{@link String }{@code >}
       *     
       */
      public void setAddressLine2(JAXBElement<String> value) {
          this.addressLine2 = value;
      }

  }
4

1 に答える 1

0

AnnotationMethodHandlerAdapterjackson messageConverter で構成する必要がある場合があります。

<bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
    <property name="objectMapper" ref="jacksonObjectMapper"/>
    <property name="supportedMediaTypes">
        <list>
            <bean class="org.springframework.http.MediaType">
                <constructor-arg index="0" value="application"/>
                <constructor-arg index="1" value="json"/>
                <constructor-arg index="2" value="UTF-8"/>
            </bean>
        </list>
    </property>
</bean>

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <property name="messageConverters">
        <list>
            <ref bean="jsonConverter"/>
        </list>
    </property>
</bean>
于 2012-06-07T21:24:37.120 に答える