24

我不经常使用 php,而且我对对象创建有点模糊。我需要发出一个发送 json 的网络服务请求,我想我已经涵盖了这部分。在我提交数据之前,我需要创建一个嵌套对象。根据我对基于 ecma 的脚本语言的经验,我假设这将是微不足道的,但我发现语法难以导航。我要创建的对象如下。

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

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

4

7 回答 7

47

这个 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

于 2013-04-04T11:53:43.620 回答
16

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

获取 JSON 示例:

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

搜索替换 {array(

搜索替换 :=>

搜索替换 })

完毕。

于 2016-05-04T22:53:12.473 回答
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"
 ))
于 2013-04-04T11:52:32.183 回答
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);
于 2013-04-04T11:53:00.173 回答
2

我们也可以构造嵌套数组,然后做一个 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;

?>

希望能帮助到你。

于 2015-12-20T10:58:45.920 回答
1

使用 PHP 的 in build 函数:

json_encode();

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

于 2013-04-04T11:53:30.127 回答
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);

希望这会有所帮助..

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

于 2013-04-04T11:56:39.170 回答