如何从JSON数据创建Bean?

时间:2016-05-11 12:23:15

标签: java json web-services jaxb

这是我无法控制的json结构:

<table id="yeni" style="border: 1px solid rgb(0, 0, 0);">
   <tr id="1">
      <td><input id="1_1" style="width: 70px; font-size: 11px;"></td>
      <td><input id="1_2" style="width: 80px; font-size: 11px;"></td>
      <td><input id="1_3" style="width: 80px; font-size: 11px;"></td>
      <td><input id="1_4" style="width: 80px; font-size: 11px;"></td>
      <td><input id="1_5" style="width: 80px; font-size: 11px;"></td>
      <td><input id="1_6" style="width: 80px; font-size: 11px;"></td>
      <td><input id="1_7" style="width: 80px; font-size: 11px;"></td>
      <td><input id="1_8" type="hidden" value="75" style="width: 80px; font-size: 11px;"></td>
      <td><button></button></td>
   </tr>
   <tr id="2">
      <td><input id="2_1" style="width: 70px; font-size: 11px;"></td>
      <td><input id="2_2" style="width: 80px; font-size: 11px;"></td>
      <td><input id="2_3" style="width: 80px; font-size: 11px;"></td>
      <td><input id="2_4" style="width: 80px; font-size: 11px;"></td>
      <td><input id="2_5" style="width: 80px; font-size: 11px;"></td>
      <td><input id="2_6" style="width: 80px; font-size: 11px;"></td>
      <td><input id="2_7" style="width: 80px; font-size: 11px;"></td>
      <td><input id="2_8" type="hidden" value="30.68" style="width: 80px; font-size: 11px;"></td>
      <td><button></button></td>
   </tr>
   <tr id="3">
      <td><input id="3_1" style="width: 70px; font-size: 11px;"></td>
      <td><input id="3_2" style="width: 80px; font-size: 11px;"></td>
      <td><input id="3_3" style="width: 80px; font-size: 11px;"></td>
      <td><input id="3_4" style="width: 80px; font-size: 11px;"></td>
      <td><input id="3_5" style="width: 80px; font-size: 11px;"></td>
      <td><input id="3_6" style="width: 80px; font-size: 11px;"></td>
      <td><input id="3_7" style="width: 80px; font-size: 11px;"></td>
      <td><input id="3_8" type="hidden" value="16.56" style="width: 80px; font-size: 11px;"></td>
      <td><button></button></td>
   </tr>
   <tr id="4">
      <td><input id="4_1" style="width: 70px; font-size: 11px;"></td>
      <td><input id="4_2" style="width: 80px; font-size: 11px;"></td>
      <td><input id="4_3" style="width: 80px; font-size: 11px;"></td>
      <td><input id="4_4" style="width: 80px; font-size: 11px;"></td>
      <td><input id="4_5" style="width: 80px; font-size: 11px;"></td>
      <td><input id="4_6" style="width: 80px; font-size: 11px;"></td>
      <td><input id="4_7" style="width: 80px; font-size: 11px;"></td>
      <td><input id="4_8" type="hidden" value="30.68" style="width: 80px; font-size: 11px;"></td>
      <td><button></button></td>
   </tr>
   <tr id="5">
      <td><input id="5_1" style="width: 70px; font-size: 11px;"></td>
      <td><input id="5_2" style="width: 80px; font-size: 11px;"></td>
      <td><input id="5_3" style="width: 80px; font-size: 11px;"></td>
      <td><input id="5_4" style="width: 80px; font-size: 11px;"></td>
      <td><input id="5_5" style="width: 80px; font-size: 11px;"></td>
      <td><input id="5_6" style="width: 80px; font-size: 11px;"></td>
      <td><input id="5_7" style="width: 80px; font-size: 11px;"></td>
      <td><input id="5_8" type="hidden" style="width: 80px; font-size: 11px;"></td>
      <td><button></button></td>
   </tr>
</table>

我尝试从中生成XSD,然后使用{ "items":[ { "rating":5.4, "count":10 }, { "rating":4.4, "count":13 } //repeat... ] } 自动生成java类。

这就是我的尝试:

xsd2java

结果是:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="list">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="items">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element type="xs:int" name="rating"/>
                    <xs:element type="xs:int" name="count"/>
                  </xs:sequence>
                </xs:complexType>
    </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

但是:这不正确:@XmlRootElement("list") @XmlAccessorType(XmlAccessType.FIELD) public class MyDTO { MyDTO.Items items; @XmlAccessorType(XmlAccessType.FIELD) public static class Items { private int rating; private int count; } } 应该是items。 我做错了什么?

1 个答案:

答案 0 :(得分:-1)

你必须提供maxOccurs =&#34;无界&#34; (或非负数)。 e.g。

<xs:complexType>
  <xs:sequence maxOccurs="unbounded">
      ....
  </xs:sequence>
</xs:complexType>

有关详细信息,请参阅http://www.w3schools.com/xml/el_sequence.asp