我没有使用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中是不常见的吗?
答案 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)
答案 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);
希望这有助于..
发布了它,然后已经看到了很多答案! :|