PHP не кодирует в JSON

Это может показаться дубликатом, но я пробовал другие ответы безрезультатно. Я использую Xamarin и PHP. Мой PHP-запрос работает, но он не возвращает правильно отформатированный PHP. Я использую PHP 5.6 и JSON проверен. Мой PHP это:

$stmt=$conn->prepare("SELECT id,user,water,poop FROM dailyMisc WHERE user = ? AND misc_day = ?");
$stmt->bind_param('is',$userId,$dateSelected);

$stmt->execute();
$stmt->bind_result($idR,$user_idR,$waterR,$poopR);
$stmt->store_result();

while($stmt->fetch())
{
$misc[] = array('Id'=>$idR,'UserId'=>$user_idR,'Water'=>$waterR,'Poop'=>$poopR);
echo json_encode($misc);
}

PHP возвращает:

[{ «Идентификатор»: 25, «UserId»: 24, «вода»: 0, «Полуют»: 1}]

Моя ошибка Xamarin:

Newtonsoft.Json.JsonSerializationException: Невозможно десериализовать
текущий массив JSON (например, [1,2,3]) в тип
BitesBoardMobile.businessObject.BusinessMisc, потому что тип
для десериализации требуется объект JSON (например, {«name»: «value»})
правильно.

Чтобы исправить эту ошибку, измените JSON на объект JSON (например,
{«name»: «value»}) или измените десериализованный тип на массив или
тип, который реализует интерфейс коллекции (например, ICollection, IList)
как список, который можно десериализовать из массива JSON.
JsonArrayAttribute также может быть добавлен к типу, чтобы заставить его
десериализовать из массива JSON.

-2

Решение

Кажется, в сообщении об ошибке содержится вся необходимая информация: для типа требуется объект JSON (например, {«name»: «value»}). Вы пытаетесь передать JSON массив в функцию, которая ожидает объект JSON.

php возвращает [{«Id»: 25, «UserId»: 24, «Water»: 0, «Poop»: 1}]

Эти квадратные скобки указывают, что вы отправляете массив, а не объект. Объект будет выглядеть так (обратите внимание, без квадратных скобок):

{"Id":25,"UserId":24,"Water":0,"Poop":1}

К счастью, нужный вам объект также является первым и единственным членом массива, так что вы можете взять его (возможно, json_encode($misc[0])) или актерский состав $misc как объект, в первую очередь, снимая скобки с его объявления ($misc =не $misc[] =):

 $misc = array('Id'=>$idR,'UserId'=>$user_idR,'Water'=>$waterR,'Poop'=>$poopR);
0

Другие решения

проблема в том, что ваш массив не был правильно отформатирован.

$misc = ['Id'=>$idR,'UserId'=>$user_idR,'Water'=>$waterR,'Poop'=>$poopR];
echo json_encode($misc);
-1

По вопросам рекламы [email protected]