我正在使用JSON API;我想创建一个带有值的变量,然后通过json_encode
将其转换为JSON字符串。 (工作)JSON字符串是这样的:
$data = '
{
"function":"setArticleImages",
"paras":{
"user":"'.$user.'",
"pass":"'.$pass.'",
"product_model":"'.$productsModel.'",
"images":{
"products_id":'.$products_id.',
"image_name":"'.$imageName.'",
"image":"'.$image.'",
"products_images":[{
"products_id":'.$products_id.',
"image_name":"'.$imageName2.'",
"image":"'.$image2.'"
} ]
}
}}
';
我现在试图像这样写它并使用json_encode
:
$data = array(
"function" => "setArticleImages",
"paras" => array(
"user" => $user,
"pass" => $pass,
"product_model" => $productsModel,
"images" => array(
"products_id" => $products_id,
"image_name" => $imageName,
"image" => $image,
"products_images" => array(
"products_id" => $products_id,
"image_name" => $imageName2,
"image" => $image2,
),
)
)
);
$data = json_encode($data);
不幸的是它不起作用。问题似乎是在'"products_images" => array('
。我不知道如何处理'['
部分的'"products_images":[{'
。
有人知道如何在第二个代码片段中编写它吗?
您只需要在products_images
元素中添加一个额外级别的数组,以便获得数字索引的关联数组数组,为您提供所需的对象数组:
$data = array(
"function" => "setArticleImages",
"paras" => array(
"user" => $user,
"pass" => $pass,
"product_model" => $productsModel,
"images" => array(
"products_id" => $products_id,
"image_name" => $imageName,
"image" => $image,
"products_images" => array(
array(
"products_id" => $products_id,
"image_name" => $imageName2,
"image" => $image2,
)
),
)
)
);
JSON表示法中的“{}”是带有字母数字键的PHP数组。
所以:
$array = ["foo" => [1,2,3], "bar" => [4,5,6]
将以JSON字符串转换:
{ foo : [1,2,3], bar: [4,5,6]}
所以如果你正在寻找一个看起来像这样的JSON
[{ foo : [1,2,3], bar: [4,5,6]}]
您必须使用包含字母数字数组的数字键来执行数组:
$array = [["foo" => [1,2,3], "bar" => [4,5,6]]];
// same as
$array = [ 0 => ["foo" => [1,2,3], "bar" => [4,5,6]]];