Создать вложенный объект JSON в php? - программирование
Подтвердить что ты не робот

Создать вложенный объект JSON в php?

Я не очень много работаю с php, и я немного нечеткий при создании объекта. Мне нужно сделать запрос webservice, отправляющий json, и я думаю, что у меня есть эта часть. Прежде чем я могу представить данные, мне нужно создать вложенный объект. Я предполагал, что это будет тривиально на основе моего опыта работы с языками сценариев на основе ecma, но я считаю, что синтаксис трудно ориентироваться. Объект, который я хочу создать, находится ниже.

{ "client": {
    "build": "1.0",
    "name": "xxxxxx",
    "version": "1.0"
    },
    "protocolVersion": 4,
    "data": {
        "distributorId": "xxxx",
        "distributorPin": "xxxx",
        "locale": "en-US"
    }
}

Я видел много примеров плоских объектов, но пока не нашел минимального примера для вложенного объекта. Каким будет синтаксис php для объекта выше? Это необычная вещь в php?

4b9b3361

Ответ 1

эта структура JSON может быть создана с помощью кода PHP

$json = json_encode(array(
     "client" => array(
        "build" => "1.0",
        "name" => "xxxxxx",
        "version" => "1.0"
     ),
     "protocolVersion" => 4,
     "data" => array(
        "distributorId" => "xxxx",
        "distributorPin" => "xxxx",
        "locale" => "en-US"
     )
));

см. json_encode

Ответ 2

Эй, это быстрый трюк, чтобы вручную преобразовать сложные JSON в PHP-объект.

Возьмите пример JSON, как вы:

{ "client": {
    "build": "1.0",
    "name": "xxxxxx",
    "version": "1.0"
    },
    "protocolVersion": 4,
    "data": {
        "distributorId": "xxxx",
        "distributorPin": "xxxx",
        "locale": "en-US"
    }
}

Искать-Заменить { на array(

Искать-Заменить : на =>

Искать-Заменить } на )

Готово.

Ответ 3

Пользовательский массив, чтобы получить правильный формат и затем вызвать echo json_encode (массив)

           array( "client" => array(
    "build" => "1.0",
    "name" => "xxxxxx",
    "version" => "1.0"
 ),
 "protocolVersion" => 4,
 "data" => array(
    "distributorId" => "xxxx",
    "distributorPin" => "xxxx",
    "locale" => "en-US"
 ))

Ответ 4

$client = new Client();
$client->information = new Information();
$client->information->build = '1.0';
$client->information->name = 'xxxxxx';
$client->information->version = '1.0';
$client->protocolVersion = 4;
$client->data = new Data();
$client->data->distributorId = "xxxx";
$client->data->distributorPin = "xxxx";
$client->data->locale = "en-US";

Возможно, что-то вроде выше? Клиент будет содержать два объекта. Информация и данные.

Edit Используя json_encode, вы должны создать этот объект в виде массива в PHP.

$clientObj = array('client'=> 
    array( array('build'=>'1.0','name'=>'xxxx', 'version'=>'1.0'), 

           'protocolVersion'=>4, 

           'data'=>array('distributorId' => 'xxxx', 'distributorPin' => 'xxxx', 'locale' => 'en-US')
);

print json_encode($clientObj);

Ответ 5

Мы также можем построить вложенный массив, а затем выполнить json_encode для построения вложенного JSON.

Например,

{"User":
       {"username":"test",
        "address":"Posted value fro address field",
        "location":{
                     "id":12345
                    }
        }
}

Выше вывод, который мы можем получить, написав ниже php-код:

<?php
$obj = array(
            'username'=>$lv_username,
            'address'=>$lv_address,
            'location'=>array('id'=>$lv_locationId)
    );
$data = '{"User":'. json_encode($obj) .'}';
echo $data;

?>

Надеюсь, что это поможет.

Ответ 6

Используйте встроенную функцию PHP:

json_encode();

это преобразует массив в объект JSON.

Ответ 7

Вы можете использовать json_encode для кодирования php-массива http://php.net/manual/en/function.json-encode.php

$theArray = array('client'= array('build'=>'1.0', 
                                'name'=>'xxxxx', 
                                'version'=>'1.0'
                               ), 
                'protocolVersion'=> 4, 
                'data'=> array('distributorId'=>'xxxx', 
                               'distributorPin'=>'xxxx', 
                               'locale'=>'en-US' 
                               ) 
                );

$theObj = json_encode($theArray);

надеюсь, это поможет..

разместил его, а затем уже видел множество ответов!: |