如何在XSD中定义Hashmap?

时间:2016-02-11 07:09:53

标签: java json xml xsd jaxb

我正在尝试用我已经获得的json响应创建一个xsd文件,然后使用该xsd生成JAXB类。我的问题是json是一种我无法转换为xsd的格式。这是我的json:

{
"result1":[{"010201":[3,2,0,4,3,4]},{"010202":[1,6,3,2,2,2]},{"010203":[2,3,3,4,4,0]}],
"result2":[1,6,3,2,2,2],
"result3":[{"010201":[3,2,0,3,4]},{"010202":[1,6,3,2,2]},{"010203":[2,3,4,4,0]}],
"result4":[1,4,6,4,1],
"result5":[{"010201":34},{"010202":12},{"010203":78}],
"result6":41
}

以上是xml格式的上述json:

 <?xml version="1.0" encoding="UTF-8" ?>

<result1>
    <010201>3</010201>
    <010201>2</010201>
    <010201>0</010201>
    <010201>4</010201>
    <010201>3</010201>
    <010201>4</010201>
</result1>
<result1>
    <010202>1</010202>
    <010202>6</010202>
    <010202>3</010202>
    <010202>2</010202>
    <010202>2</010202>
    <010202>2</010202>
</result1>
<result1>
    <010203>2</010203>
    <010203>3</010203>
    <010203>3</010203>
    <010203>4</010203>
    <010203>4</010203>
    <010203>0</010203>
</result1>

<result2>1</result2>
<result2>6</result2>
<result2>3</result2>
<result2>2</result2>
<result2>2</result2>
<result2>2</result2>
<result3>
    <010201>3</010201>
    <010201>2</010201>
    <010201>0</010201>
    <010201>3</010201>
    <010201>4</010201>
</result3>
<result3>
    <010202>1</010202>
    <010202>6</010202>
    <010202>3</010202>
    <010202>2</010202>
    <010202>2</010202>
</result3>
<result3>
    <010203>2</010203>
    <010203>3</010203>
    <010203>4</010203>
    <010203>4</010203>
    <010203>0</010203>
</result3>
<result4>1</result4>
<result4>4</result4>
<result4>6</result4>
<result4>4</result4>
<result4>1</result4>
<result5>
    <010201>34</010201>
</result5>
<result5>
    <010202>12</010202>
</result5>
<result5>
    <010203>78</010203>
</result5>
<result6>41</result6>

我在为result2,result4,result6元素创建复杂类型时没有遇到任何问题。但是result1,result3和result5有一个整数数组。我如何为此创建一个xsd?有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

考虑尝试使用XSD生成如下所示的XML:

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <result1>
        <entry>
            <key>010201</key>
            <value>
                <val>3</val>
                <val>2</val>
                <val>1</val>
            </value>
        </entry>
        <entry>
            <key>010201</key>
            <value>
                <val>3</val>
                <val>2</val>
                <val>1</val>
            </value>
        </entry>
    </result1>
    <result2>
        <value>
            <val>3</val>
            <val>2</val>
            <val>1</val>
        </value>
    </result2>
    <result3>
        <entry>
            <key>010201</key>
            <value>
                <val>3</val>
                <val>2</val>
                <val>1</val>
            </value>
        </entry>
        <entry>
            <key>010201</key>
            <value>
                <val>3</val>
                <val>2</val>
                <val>1</val>
            </value>
        </entry>
    </result3>
    <result4>
        <value>
            <val>3</val>
            <val>2</val>
            <val>1</val>
        </value>
    </result4>
    <result5>
        <entry>
            <key>010201</key>
            <value>2</value>
        </entry>
        <entry>
            <key>010201</key>
            <value>2</value>
        </entry>
     </result5>
</root>

上面的xsd会更简单。如果值将发生变化,则将值保留为XML标记将不可行。