Существует три проблемы с вашей схемой XSD
- Вы не определили целевое пространство имен. Это означает, что когда он проходит через XML Receive, он устанавливает MessageType в набор значений по умолчанию, который не ссылается на схему. Это означает, что он может не знать, какую схему использовать в JSON Encoder.
MessageType Root Promoted http://schemas.microsoft.com/BizTalk/2003/system-properties
Вы использовали
<xs:all>
вместо
<xs:sequence>
в определении схемы. То, что кодировщик JSON не обрабатывает.
Если вы определите свою схему как
<?xml version="1.0" encoding="utf-16"?>
<xs:schema xmlns:b="http://schemas.microsoft.com/BizTalk/2003" xmlns="http://bblist" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" targetNamespace="http://bblist" vc:minVersion="1.1" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Root">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" name="bblist">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="unbounded" name="item" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
с полезной нагрузкой
<ns0:Root xmlns:ns0="http://bblist">
<bblist>
<item>item_0</item>
</bblist>
</ns0:Root>
You получите вывод
{
"bblist": {
"item": [
"item_0"
]
}
}
Это ближе к вашему ожидаемому JSON, с его созданием массива повторяющихся элементов.
Ваша структура неверна для JSON, который вы ожидаете, поскольку у вас есть повторение для элемента, а не для блиста.
Если вы определяете свою схему как
<?xml version="1.0" encoding="utf-16"?>
<xs:schema xmlns:b="http://schemas.microsoft.com/BizTalk/2003" xmlns="http://bblist" xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" targetNamespace="http://bblist" vc:minVersion="1.1" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Root">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="1" maxOccurs="unbounded" name="blist" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
XML равно
<ns0:Root xmlns:ns0="http://bblist">
<blist>blist_0</blist>
</ns0:Root>
JSON равно
{
"blist": [
"blist_0"
]
}