PHP - объединение JSON с JSON_decode - PullRequest
1 голос
/ 10 ноября 2009

Я пытаюсь объединить несколько объектов JSON в один в PHP. Я перебираю объекты JSON, декодирую их, анализирую части, которые хочу сохранить, и сохраняю их в свойстве в своем классе php.

Предположим, мои объекты json выглядят следующим образом:

{
    "lists" : {
        "list" : [
            {
                "termA" : 2 ,
                "termB" : "FOO" 
            } 
        ] 
    } 
}

Я хочу со временем объединить все в объект JSON, вот так.

{
    "lists" : {
        "list" : [
            {
                "termA" : 2 ,
                "termB" : "FOO" 
            },
            {
                "termA" : 2 ,
                "termB" : "FOO" 
            } 
        ] 
    } ,
    "lists" : {
        "list" : [
            {
                "termA" : 4 ,
                "termB" : "BAR" 
            },
            {
                "termA" : 4 ,
                "termB" : "BAR" 
            } 
        ] 
    } 
}

Я пытаюсь сохранить массивы в свойстве моего класса в функции, которая вызывается iteratrivley:

   private function parseData($json){
        $decodeData = json_decode($json);
            $list = $decodeData->lists;
        $this->output .= $list
    }

Однако я получаю следующую ошибку в строке "$ this-> output. = $ List".

Объект класса stdClass не может быть преобразован в строку

Прямо сейчас $ this-> output не имеет начального значения. Что может быть лучшим способом для временного хранения массивов списков, а затем переформатировать их после прохождения всех объектов json?

Спасибо.

Ответы [ 2 ]

7 голосов
/ 10 ноября 2009

Вы были близки:

private function parseData($json){
  $decodeData = json_decode($json);
  $list = $decodeData['lists'];
  $this->output .= $list
}
2 голосов
/ 10 ноября 2009
{
    "lists" : {
      ...
    } ,
    "lists" : {
      ...
    } 
}

Это не допустимый / значимый JSON. У вас есть хэш с одним и тем же ключом ( lists ) в нем дважды. Как бы вы к этому обратились?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...