在php中创建嵌套的JSON对象?

时间:2013-04-04 11:49:10

标签: php json

我没有使用php,我对对象创建有点模糊。我需要发送一个发送json的web服务请求,我想我已经覆盖了那部分内容。在我提交数据之前,我需要创建一个嵌套对象。基于我对基于ecma的脚本语言的经验,我认为这将是微不足道的,但我发现语法难以导航。我想要创建的对象如下。

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

我已经看过很多平面对象的例子,但我还没有找到嵌套对象的最小例子。上面对象的php语法是什么?这在php中是不常见的吗?

7 个答案:

答案 0 :(得分:37)

可以通过以下PHP代码

创建此JSON结构
$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

答案 1 :(得分:13)

嘿,这是一个快速的技巧,可以将复杂的JSON手动转换为PHP对象。

抓住JSON示例:

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

搜索 - 将{替换为array(

搜索 - 将:替换为=>

搜索 - 将}替换为)

完成。

答案 2 :(得分:4)

用户数组获取正确的格式,然后调用echo json_encode(array)

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

答案 3 :(得分:3)

$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";

也许像上面那样?客户端将持有两个对象。信息和数据。

修改 的 使用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);

答案 4 :(得分:2)

我们也可以构造嵌套数组,然后执行json_encode来构造嵌套的JSON。

例如:

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

?>

以上输出我们可以通过编写下面的PHP代码来实现:

delete

希望它有所帮助。

答案 5 :(得分:1)

使用PHP的in build函数:

json_encode();

这会将数组转换为JSON对象。

答案 6 :(得分:1)

您可以使用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);

希望这有助于..

发布了它,然后已经看到了很多答案! :|