We have the following xsd that is resulting in two different class structures in Java and C#. For the Java classes we are using xjc and for C# we are using xsd.exe to convert the xsd to classes.
<s:schema xmlns:s="http://www.w3.org/2001/XMLSchema">
<s:element name="ContainerElement" type="Container" />
<s:complexType name="Container">
<s:sequence>
<s:element minOccurs="0" name="Patient" type="Patient" />
</s:sequence>
</s:complexType>
<s:complexType name="Patient">
<s:element minOccurs="0" name="Addresses" type="ArrayOfAddressAddress" />
</s:complexType>
<s:complexType name="ArrayOfAddressAddress">
<s:sequence>
<s:element maxOccurs="unbounded" minOccurs="0" name="Address" nillable="true" type="Address" />
</s:sequence>
</s:complexType>
The pertinent Java classes that are output look like this
class Patient {
protected ArrayOfAddressAddress addresses;
}
class ArrayOfAddressAddress {
protected List<Address> address;
}
The pertinent C# classes that are output look like this
class Patient {
Address [] addressesField;
}
When we serialize an object of these classes to JSON the results are different. For Java we obtain:
"Patient" : {
"Addresses": {
"Address" : [
{
}
]
}
}
For C# we obtain:
"Patient" : {
"Addresses": [
{
}
]
}
Are there any command line arguments to xjc and xsd we might have overlooked to ensure the JSON output is identical?