JAXB对象的JSON字符串结构是否始终与XSD中定义的元素的顺序对齐?更明确地说,例如,如果我有如下所示的XSD
<xs:schema>
<xs:complexType name="Person">
<xs:sequence>
<xs:element name="header">
<xs:complexType>
<xs:sequence>
<xs:element ......>
<xs:element ......>
......
.......
</xs:sequence>
<xs:complextType>
</xs:element>
<xs:element name="data">
..........
...........
</xs:element>
<xs:element name ="footer">
...........
...........
</xs:elment>
</xs:sequence>
</xs:complexType>
</xs:schema>
如您所见,我的架构定义了一个复杂的类型,称为Person,其中包含一系列元素,如Header,data,footer等其他元素。 现在,我创建一个对象,然后转换为JSON字符串。
JSON字符串是否总是返回
{"header":{},"data":{},"footer":{}}
否则顺序可能会改变?
我以不同的方式通过创建一个Person对象进行了测试,但是在所有情况下,我都看到了上述结构。但我不想根据此测试得出结论。
是否有任何规范可以确认JSON元素顺序将与XSD元素顺序对齐或不对齐?
整个原因是,我有一个问题要解决,在这种情况下,我需要从上到下处理非常大(可能是几GB)的JSON有效负载作为流。我不想将整个对象加载到内存中进行处理。如果JSON中元素的顺序是可预测的,那么我可以以此为基础构建逻辑。如果这种顺序不可预测,那么我必须重新考虑如何处理如此巨大的有效载荷。
我当前的实现方式是
reader = new JsonReader(new InputStreamReader(payloaD));
reader.beginObject();
while(reader.hasNext()){
String tokenName = reader.nextName();
if("HEADER".equals(tokenName))
//dosomething
else if("DATA".equals(tokenName))
//do something
else
//do something
}
reader.endObject();
我的实现假设如果先出现标头,然后是数据和页脚,我将处理JSON。
谢谢