Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
293 views
in Technique[技术] by (71.8m points)

php - How to add square braces around subarray data inside of a json encoded string?

When trying to access an API the JSON array must be parsed like this

{"item":[{"id":"123456", "name":"adam"}]}

But when i'm doing the following code

$data = array("item" => array("id" => "123456", "name" => "adam"));
echo json_encode($data);

it returns the json array without squared brackets as follows

{"item":{"id":"123456","name":"adam"}}

I've spent hours trying to figure out how to fix this and just can't think of a solution

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

You need to wrap things in another array:

$data = array("item" => array(array("id" => "123456", "name" => "adam")));

This will be more understandable if we use the equivalent PHP 5.4 array syntax:

$data = [ "item" => [ ["id" => "123456", "name" => "adam"] ] ];

Compare this with the JSON:

        { "item":   [ {"id":"123456", "name":"adam"      } ] }

The only thing to explain is why one of the PHP arrays remains an array [] in JSON while the other two get converted to an object {}. But the documentation already does so:

When encoding an array, if the keys are not a continuous numeric sequence starting from 0, all keys are encoded as strings, and specified explicitly for each key-value pair.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...