Я получил эту ошибку, когда пытался вызвать sql-запрос через DataService.
The studenttest-1.0.0.dbs service, which is not valid, caused {1} DS Fault Message: A JSON Array cannot be contained in the result records
Код DS: UNKNOWN_ERROR
Это объект, который должен быть возвращен из DataService.
<sql>SELECT * from etudiant where nom =?</sql>
<param name = "nom" sqlType = "STRING" />
<result outputType = "json">
{
"Envelope": {
"Body": {
"GetFacturesClientResponse": {
"GetFacturesClientResult": {
"code": 0,
"nbreFactures": 2,
"totalResteAPayerFactures": 67.832,
"listeFactures": {
"Facture": [
{
"id":"$id",
"nom":"$nom",
"prenom":"$prenom",
"age":"$age",
"note":"$note"
}
]
},
"codeClient": "P-2008-043681",
"nom": "Oussama",
"prenom": "Haythem"
}
}
}
}
}
</result>
</query>```
В сопоставление результатов нельзя добавлять сложные структуры JSON, необходимо придерживаться следующего формата. Подробнее здесь.
Кроме того, структура шаблона JSON должна соответствовать некоторым рекомендациям. чтобы быть совместимым с результатом. Эти рекомендации таковы:
- Самый верхний элемент должен быть объектом JSON. Это не может быть массив JSON.
- Для обработки нескольких записей из набора результатов непосредственный дочерний элемент самого верхнего объекта может быть массивом JSON, и массив должен содержать только один объект.
- Если возвращается только один результат, непосредственный дочерний элемент самого верхнего объекта может быть одним объектом JSON.
- После непосредственного потомка самого верхнего объекта не может быть другие массивы JSON в отображении.
Поэтому попробуйте простое сопоставление, как показано ниже, и добавьте остальную часть JSON на уровень интеграции. (Соедините службу данных с другим API и измените структуру JSON в API, прежде чем отвечать клиенту)
{
"listeFactures": {
"Facture": [
{
"id":"$id",
"nom":"$nom",
"prenom":"$prenom",
"age":"$age",
"note":"$note"
}
]
}
}