Быстрое преобразование JSON в словарь проблем с массивом Код ошибки 3840 (мусор в конце) - PullRequest
0 голосов
/ 08 апреля 2020

На протяжении HTML запросов я загружаю файл JSON из своей базы данных. Это файл JSON, который я получаю.

{"_id":{"$oid":"5e8e09d0bf75d176ecfa2101"},"name":"Pasta al pomodoro","category":"Primi","ingredients":"","price":"15.99","available":true}{"_id":{"$oid":"5e8e0c2da73abb76ec812daf"},"name":"Cotoletta","category":"Carne","ingredients":"Cotoletta, Limone","price":"25.99","available":true}

Я пытаюсь преобразовать файл JSON в словарный массив, чтобы я мог выбирать элементы, например:

myArray[0]['name']

Это код, который я использую, чтобы попытаться преобразовать JSON:

do {
    let myArray = try (JSONSerialization.jsonObject(with: data, options : .mutableContainers) as? [Dictionary<String, Any>])!
    print(myArray)
    //completion(myArray, nil)
}

Но, похоже, он не работает; он возвращает сообщение об ошибке:

Ошибка домена = NSCocoaErrorDomain Code = 3840 «Мусор в конце». UserInfo = {NSDebugDescription = Мусор в конце.}

1 Ответ

0 голосов
/ 08 апреля 2020

Проблема была на сервере PHP, так как он неправильно выдал файл JSON. Чтобы исправить это, я должен был убедиться, что файл PHP отображает «[» перед первой строкой БД, включает «,» между каждой строкой БД и заканчивает файл символом «]».

Перед :

foreach ($rows as $document) {
        echo(json_encode($document));
    }

После:

echo "[";
foreach ($rows as $document) {
    echo(json_encode($document));
    echo (", ");
}
echo "]";
...