[英]JSON with nested arrays without square brackets in PHP
StackOverflow 上有很多与我的问题相近的问题,但没有一个能完全回答。
为了在 Android 应用程序中测试 POST 请求,我找到了一个示例,该示例使用以下测试 API:
此 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.