繁体   English   中英

JSON 嵌套 arrays PHP 中不带方括号

[英]JSON with nested arrays without square brackets in PHP

StackOverflow 上有很多与我的问题相近的问题,但没有一个能完全回答。

为了在 Android 应用程序中测试 POST 请求,我找到了一个示例,该示例使用以下测试 API:

https://reqres.in/api/users/2

此 API 返回

{"data":{"id":2,"email":"janet.weaver@reqres.in","first_name":"Janet","last_name":"Weaver","avatar":"some url"}}

(注意:我将 url 更改为“某个 url”的图像,以防与 StackOverflow 上的规则发生冲突)。

我的问题是:如何让 PHP 给我完全相同的 output?

通常,我使用这样的东西:

$result=array();
$result[]['id']=2/1; //0
$result[]['email']="janet.weaver@reqres.in"; //1
$result[]['first_name']="Janet"; //2
$result[]['last_name']="Weaver"; //3
$result[]['avatar']="some url"; //4
$data["result"]=$result;
echo json_encode($data);

但这会在 output 中添加一些方括号。 那么:如何在我自己的 PHP 脚本中模仿 URL 中的 output ?

希望有经验的人多多指教!

阿尔伯特

您正在使用$result[]['id']=2/1;构建嵌套数组 . 每次调用都会向$result列表数组添加一个带有单个元素的新关联数组。

PHP 将两件事编码为 JSON 对象 - 关联的 arrays 和对象。 使用 arrays 更短,但使用对象可以帮助更好地理解它。 所以首先是一个stdClass的例子:

$json = new stdClass();
$json->data = $data = new stdClass();
$data->id = 2;
$data->email = "janet.weaver@reqres.in";
$data->first_name = "Janet";
$data->last_name = "Weaver";
$data->avatar= "some url";

echo json_encode($json, JSON_PRETTY_PRINT);

对象是 PHP 中的引用。 所以你的一个改变会影响到所有变量的引用。 数组不是这种情况。 但它可以只用一个表达式来完成:

$json = [
    'data' => [
        'id' => 2/1,
        'email' => "janet.weaver@reqres.in",
        'first_name' => "Janet",
        'last_name' => "Weaver", 
        'avatar' => "some url"
    ]
];

echo json_encode($json, JSON_PRETTY_PRINT);

希望这个示例对您有所帮助,下面的示例包含您期望的所有组合。

<?php
     $name = "Your Name";
        $yearsofexp = "Years";
        $designation = "Your designnation";


        $pro_summary->name = $name;
        $pro_summary->yearsofexp = $yearsofexp;
        $pro_summary->designation = $designation;

        $topics->tech1 = "Android";
        $topics->tech2 = "Java";
        $topics->tech3 ="PHP";

        $past_exp[]=array("comp"=> "company One", "role"=> "techlead","dates"=>"2015-2019", "main_resp"=>"coding,testing,debugging","logo"=>"some.png");
        $past_exp[]=array("comp"=> "company 2", "role"=> "senior software engineer","dates"=>"2014-2015", "main_resp"=>"coding,testing,debugging","logo"=>"some2.png");
        $past_exp[]=array("comp"=> "company 3", "role"=> "senior software developer","dates"=>"2013-2014", "main_resp"=>"coding,testing,debugging","logo"=>"some3.png");
        $past_exp[]=array("comp"=> "company 4", "role"=> "software developer","dates"=>"2010-2013", "main_resp"=>"coding,testing,debugging","logo"=>"some4.png");

        //$past_exp[] = array("px1" =>$past_exp[1],"px2" =>$past_exp[2],"px3" =>$past_exp[3],"px4" => $past_exp[4] );

        $uni[] = array("education"=>"Degree 1", "university"=>"University 1", "logo" =>"uni1.png");
        $uni[] = array("education"=>"Degree 2", "university"=>"University 2", "logo"=>"uni2.png");



        $my_cv->Professional = $pro_summary;
        $my_cv->Technology = $topics;
        $my_cv->PastExperience = $past_exp;
        $my_cv->Education = $uni;




        echo json_encode($my_cv);
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM