JSON-декодирование: смешанные типы - неверная синтаксическая ошибка

1

Это мой пример JSON

            {"tasks" : [
            {
            "id" : "27604_11",
            "quality" : "A4",
            "position" : "183567",
            "profile" : "https:\/\/example.com\/gallery\/profiles\/8764_2.jpg",
            "type" : "image",
            "valid" : "24 days",
            "member" : {
                "carrier" : null,
                "zone" : null,
                "offd" : null },
            "taketime" : "4minutes",
            "listeners" : {
                "count" : 0 },
            "message" : "stay prepared",
            "level" : "High"
            },
            {
            "id" : "27604_12",
            "quality" : "B3",
            "position" : "183569",
            "profile" : "https:\/\/example.com\/gallery\/profiles\/8232_1.jpg",
            "type" : "image",
            "valid" : "11 days",
            "member" : {
                "carrier" : null,
                "zone" : null,
                "offd" : null },
            "taketime" : "7minutes",
            "listeners" : {
                "count" : 2 },
            "message" : "ready",
            "level" : "High"
            },
            {
            "id" : "73754_35",
            "quality" : "A3",
            "position" : "13542",
            "profile" : "https:\/\/example.com\/gallery\/profiles\/1235_5.jpg",
            "type" : "image",
            "valid" : "5 days",
            "member" : {
                "carrier" : null,
                "zone" : null,
                "offd" : null },
            "taketime" : "22minutes",
            "listeners" : {
                "count" : 0 },
            "message" : "Good",
            "level" : "Normale" }
        ],
        "start_poz" : "36774263743"
        }
        {"tasks" : [
            {
            "id" : "27604_11",
            "quality" : "A4",
            "position" : "183567",
            "profile" : "https:\/\/example.com\/gallery\/profiles\/8764_2.jpg",
            "type" : "image",
            "valid" : "24 days",
            "member" : {
                "carrier" : null,
                "zone" : null,
                "offd" : null },
            "taketime" : "4minutes",
            "listeners" : {
                "count" : 0 },
            "message" : "stay prepared",
            "level" : "High"
            },
            {
            "id" : "27604_12",
            "quality" : "B3",
            "position" : "183569",
            "profile" : "https:\/\/example.com\/gallery\/profiles\/8232_1.jpg",
            "type" : "image",
            "valid" : "11 days",
            "member" : {
                "carrier" : null,
                "zone" : null,
                "offd" : null },
            "taketime" : "7minutes",
            "listeners" : {
                "count" : 2 },
            "message" : "ready",
            "level" : "High"
            },
            {
            "id" : "73754_35",
            "quality" : "A3",
            "position" : "13542",
            "profile" : "https:\/\/example.com\/gallery\/profiles\/1235_5.jpg",
            "type" : "image",
            "valid" : "5 days",
            "member" : {
                "carrier" : null,
                "zone" : null,
                "offd" : null },
            "taketime" : "22minutes",
            "listeners" : {
                "count" : 0 },
            "message" : "Good",
            "level" : "Normale" }
        ],
        "start_poz" : "36774263743"
        }
        {"tasks" : [
            {
            "id" : "27604_11",
            "quality" : "A4",
            "position" : "183567",
            "profile" : "https:\/\/example.com\/gallery\/profiles\/8764_2.jpg",
            "type" : "image",
            "valid" : "24 days",
            "member" : {
                "carrier" : null,
                "zone" : null,
                "offd" : null },
            "taketime" : "4minutes",
            "listeners" : {
                "count" : 0 },
            "message" : "stay prepared",
            "level" : "High"
            },
            {
            "id" : "27604_12",
            "quality" : "B3",
            "position" : "183569",
            "profile" : "https:\/\/example.com\/gallery\/profiles\/8232_1.jpg",
            "type" : "image",
            "valid" : "11 days",
            "member" : {
                "carrier" : null,
                "zone" : null,
                "offd" : null },
            "taketime" : "7minutes",
            "listeners" : {
                "count" : 2 },
            "message" : "ready",
            "level" : "High"
            },
            {
            "id" : "73754_35",
            "quality" : "A3",
            "position" : "13542",
            "profile" : "https:\/\/example.com\/gallery\/profiles\/1235_5.jpg",
            "type" : "image",
            "valid" : "5 days",
            "member" : {
                "carrier" : null,
                "zone" : null,
                "offd" : null },
            "taketime" : "22minutes",
            "listeners" : {
                "count" : 0 },
            "message" : "Good",
            "level" : "Normale" }
        ],
        "start_poz" : "36774263743"
        }

И это php:

<?php
$file = file_get_contents("in.txt");
$json = json_decode($file, true);

/** Пропуск кода json_last_error(). Ошибка: JSON_ERROR_SYNTAX **/

$tasks = $json["tasks"];
foreach ($tasks as $key => $value)
{
    echo "<ul>";
    echo "<li>".$value['id']."</li>";
    echo "<li>".$value['quality']."</li>";
    echo "<li>".$value['position']."</li>";
    echo "<li>".$value['profile']."</li>";
    echo "<li>".$value['type']."</li>";
    echo "<li>".$value['valid']."</li>";
    echo "<li>".$value['member']['carrier']."</li>";
    echo "<li>".$value['member']['zone']."</li>";
    echo "<li>".$value['member']['offd']."</li>";
    echo "<li>".$value['taketime']."</li>";
    echo "<li>".$value['listeners']['count']."</li>";
    echo "<li>".$value['taketime']."</li>";
    echo "<li>".$value['message']."</li>";
    echo "<li>".$value['level']."</li>";
    echo "</ul>";
        }
    ?>

Фактически, ошибка не позволяет выполнять код с JSON. Но если вы используете только 1 часть JSON, вот так:

{"tasks" : [
            {
            "id" : "27604_11",
            "quality" : "A4",
            "position" : "183567",
            "profile" : "https:\/\/example.com\/gallery\/profiles\/8764_2.jpg",
            "type" : "image",
            "valid" : "24 days",
            "member" : {
                "carrier" : null,
                "zone" : null,
                "offd" : null },
            "taketime" : "4minutes",
            "listeners" : {
                "count" : 0 },
            "message" : "stay prepared",
            "level" : "High"
            },
            {
            "id" : "27604_12",
            "quality" : "B3",
            "position" : "183569",
            "profile" : "https:\/\/example.com\/gallery\/profiles\/8232_1.jpg",
            "type" : "image",
            "valid" : "11 days",
            "member" : {
                "carrier" : null,
                "zone" : null,
                "offd" : null },
            "taketime" : "7minutes",
            "listeners" : {
                "count" : 2 },
            "message" : "ready",
            "level" : "High"
            },
            {
            "id" : "73754_35",
            "quality" : "A3",
            "position" : "13542",
            "profile" : "https:\/\/example.com\/gallery\/profiles\/1235_5.jpg",
            "type" : "image",
            "valid" : "5 days",
            "member" : {
                "carrier" : null,
                "zone" : null,
                "offd" : null },
            "taketime" : "22minutes",
            "listeners" : {
                "count" : 0 },
            "message" : "Good",
            "level" : "Normale" }
        ],
        "start_poz" : "36774263743"
        }

то он РАБОТАЕТ!

Не могли бы вы, пожалуйста, направить меня, где моя ошибка с синтаксисом.. и.. может быть, вы также можете помочь мне понять, как получить значение start_poz с каждым циклом получения значений из массива задач?

Большое спасибо и С Новым Годом ! ;)

  • 1
    jsonlint.com
  • 0
    Да, но .. извините, что это значит: ожидая 'EOF', '}', ',', ']', получил '{', как там сказано. Я вроде новичок)))
Показать ещё 3 комментария
Теги:
object
arrays

3 ответа

3
Лучший ответ

У вас есть три отдельных объекта JSON в вашем исходном файле на верхнем уровне. Вам нужно обернуть весь ввод как массив [... ] или проанализировать каждый отдельно.

  • 0
    Это идеальный ответ! Мне удалось вручную объединить 3 JSON-ответа в один файл и я не мог понять, в чем проблема. Теперь я четко знаю, что вызвало это. Спасибо за помощь с основами!
  • 0
    Просто для справки есть проблема с безопасностью в json-файлах, описанная на этом сайте haacked.com/archive/2008/11/20/… так что может быть лучше использовать объект для их объединения, чем массив
1

Джим понял это правильно, вот исправленный JSON

{
  "tasklist": [{
    "tasks": [{
      "id": "27604_11",
      "quality": "A4",
      "position": "183567",
      "profile": "https:\/\/example.com\/gallery\/profiles\/8764_2.jpg",
      "type": "image",
      "valid": "24 days",
      "member": {
        "carrier": null,
        "zone": null,
        "offd": null
      },
      "taketime": "4minutes",
      "listeners": {
        "count": 0
      },
      "message": "stay prepared",
      "level": "High"
    }, {
      "id": "27604_12",
      "quality": "B3",
      "position": "183569",
      "profile": "https:\/\/example.com\/gallery\/profiles\/8232_1.jpg",
      "type": "image",
      "valid": "11 days",
      "member": {
        "carrier": null,
        "zone": null,
        "offd": null
      },
      "taketime": "7minutes",
      "listeners": {
        "count": 2
      },
      "message": "ready",
      "level": "High"
    }, {
      "id": "73754_35",
      "quality": "A3",
      "position": "13542",
      "profile": "https:\/\/example.com\/gallery\/profiles\/1235_5.jpg",
      "type": "image",
      "valid": "5 days",
      "member": {
        "carrier": null,
        "zone": null,
        "offd": null
      },
      "taketime": "22minutes",
      "listeners": {
        "count": 0
      },
      "message": "Good",
      "level": "Normale"
    }],
    "start_poz": "36774263743"
  }, {
    "tasks": [{
      "id": "27604_11",
      "quality": "A4",
      "position": "183567",
      "profile": "https:\/\/example.com\/gallery\/profiles\/8764_2.jpg",
      "type": "image",
      "valid": "24 days",
      "member": {
        "carrier": null,
        "zone": null,
        "offd": null
      },
      "taketime": "4minutes",
      "listeners": {
        "count": 0
      },
      "message": "stay prepared",
      "level": "High"
    }, {
      "id": "27604_12",
      "quality": "B3",
      "position": "183569",
      "profile": "https:\/\/example.com\/gallery\/profiles\/8232_1.jpg",
      "type": "image",
      "valid": "11 days",
      "member": {
        "carrier": null,
        "zone": null,
        "offd": null
      },
      "taketime": "7minutes",
      "listeners": {
        "count": 2
      },
      "message": "ready",
      "level": "High"
    }, {
      "id": "73754_35",
      "quality": "A3",
      "position": "13542",
      "profile": "https:\/\/example.com\/gallery\/profiles\/1235_5.jpg",
      "type": "image",
      "valid": "5 days",
      "member": {
        "carrier": null,
        "zone": null,
        "offd": null
      },
      "taketime": "22minutes",
      "listeners": {
        "count": 0
      },
      "message": "Good",
      "level": "Normale"
    }],
    "start_poz": "36774263743"
  }, {
    "tasks": [{
      "id": "27604_11",
      "quality": "A4",
      "position": "183567",
      "profile": "https:\/\/example.com\/gallery\/profiles\/8764_2.jpg",
      "type": "image",
      "valid": "24 days",
      "member": {
        "carrier": null,
        "zone": null,
        "offd": null
      },
      "taketime": "4minutes",
      "listeners": {
        "count": 0
      },
      "message": "stay prepared",
      "level": "High"
    }, {
      "id": "27604_12",
      "quality": "B3",
      "position": "183569",
      "profile": "https:\/\/example.com\/gallery\/profiles\/8232_1.jpg",
      "type": "image",
      "valid": "11 days",
      "member": {
        "carrier": null,
        "zone": null,
        "offd": null
      },
      "taketime": "7minutes",
      "listeners": {
        "count": 2
      },
      "message": "ready",
      "level": "High"
    }, {
      "id": "73754_35",
      "quality": "A3",
      "position": "13542",
      "profile": "https:\/\/example.com\/gallery\/profiles\/1235_5.jpg",
      "type": "image",
      "valid": "5 days",
      "member": {
        "carrier": null,
        "zone": null,
        "offd": null
      },
      "taketime": "22minutes",
      "listeners": {
        "count": 0
      },
      "message": "Good",
      "level": "Normale"
    }],
    "start_poz": "36774263743"
  }]
}
1

jsonlint.com говорит:

Error: Parse error on line 58:
...z": "36774263743"} { "tasks": [{     "id
----------------------^
Expecting 'EOF', '}', ',', ']', got '{'

Поэтому, когда это дошло до этого '{', это было в состоянии, где только

  • КОНЕЦ ФАЙЛА,
  • близкая фигурная скобка,
  • запятая,
  • или закрытой скобки

будет действительным.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню