Ошибка запроса службы данных WSO2: массив JSON не может содержаться в записях результатов

Я получил эту ошибку, когда пытался вызвать 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>``` 
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
2
0
67
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В сопоставление результатов нельзя добавлять сложные структуры JSON, необходимо придерживаться следующего формата. Подробнее здесь.

Кроме того, структура шаблона JSON должна соответствовать некоторым рекомендациям. чтобы быть совместимым с результатом. Эти рекомендации таковы:

  • Самый верхний элемент должен быть объектом JSON. Это не может быть массив JSON.
  • Для обработки нескольких записей из набора результатов непосредственный дочерний элемент самого верхнего объекта может быть массивом JSON, и массив должен содержать только один объект.
  • Если возвращается только один результат, непосредственный дочерний элемент самого верхнего объекта может быть одним объектом JSON.
  • После непосредственного потомка самого верхнего объекта не может быть другие массивы JSON в отображении.

Поэтому попробуйте простое сопоставление, как показано ниже, и добавьте остальную часть JSON на уровень интеграции. (Соедините службу данных с другим API и измените структуру JSON в API, прежде чем отвечать клиенту)

{
  "listeFactures": {
        "Facture": [
          {
            "id":"$id",
            "nom":"$nom",
            "prenom":"$prenom",
            "age":"$age",
            "note":"$note"
          }
        ]
    }
}

Другие вопросы по теме