Q: недопустимое смещение строки JSON -> PHP

1

Я уже рассматриваю много вопросов в stackoverflow о моей проблеме, но я не нашел никакого решения. Я не знаю, где проблема в моем коде? Я получил недопустимое сообщение смещения строки в этой строке:

echo $value["country"] . ", " . $value["competition"] . "<br>";

Мой полный код:

<?php

// file_get_contents call instead
$str = file_get_contents('general.json');

$json = json_decode($str,true);

 foreach($json as $key => $value){

echo $value["country"] . ", " . $value["competition"] . "<br>";

}
?>

мой исходный образец json:

["{\"country\":\"America\",\"competition\":\"Copa America\",\"club\":\"BOCA JUNIORS\"}","{\"country\":\"Germany\",\"competition\":\"Bundesliga\",\"club\":\"HANNOVER\"}","{\"country\":\"Asia\",\"competition\":\"JLeague\",\"club\":\"NAGOYA\"}"]

Если я просматриваю формат данных с помощью var_dump ($ json), то вижу, что это массив. С var_dump ($ value) я вижу, что есть строка. Пожалуйста, помогите мне, где проблема в моем коде, почему не удалось повторить оценку стоимости страны и стоимости?

  • 0
    В будущем попробуйте также использовать print_r !
Теги:

1 ответ

2

Проблема в том, что у вас есть json, который был закодирован дважды, как массив, так и элементы в массиве.

Вам следует избегать этого, но если вы не можете изменить источник, вам также необходимо декодировать значения:

<?php
// file_get_contents call instead
$str = file_get_contents('general.json');

$json = json_decode($str,true);

foreach($json as $key => $value){
    // decode the $value string
    $value = json_decode($value, true);

    echo $value["country"] . ", " . $value["competition"] . "<br>";

}
?>

Пример.

  • 0
    Спасибо, мой друг!

Ещё вопросы

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