如何创建 JSON 对象

我试图用一个 PHP 数组创建一个 JSON 对象:

$post_data = array('item_type_id' => $item_type,
'string_key' => $string_key,
'string_value' => $string_value,
'string_extra' => $string_extra,
'is_public' => $public,
'is_public_for_contacts' => $public_contacts);

编码 JSON 的代码如下:

$post_data = json_encode($post_data);

JSON 文件最终应该是这样的:

{
"item": {
"is_public_for_contacts": false,
"string_extra": "100000583627394",
"string_value": "value",
"string_key": "key",
"is_public": true,
"item_type_id": 4,
"numeric_extra": 0
}
}

如何将创建的 JSON 代码封装在“ item”中: { JSON CODE HERE }。

247283 次浏览

通常,你会这样做:

$post_data = json_encode(array('item' => $post_data));

但是,由于您似乎希望输出为“ {}”,因此最好确保通过传递 JSON_FORCE_OBJECT常量来强制 json_encode()作为对象进行编码。

$post_data = json_encode(array('item' => $post_data), JSON_FORCE_OBJECT);

{}”括号指定一个对象,“ []”根据 JSON 规范用于数组。

您只需要在 php 数组中添加另一个层:

$post_data = array(
'item' => array(
'item_type_id' => $item_type,
'string_key' => $string_key,
'string_value' => $string_value,
'string_extra' => $string_extra,
'is_public' => $public,
'is_public_for_contacts' => $public_contacts
)
);


echo json_encode($post_data);

虽然这里张贴的其他答案很有效,但我发现下面的方法更自然:

$obj = (object) [
'aString' => 'some string',
'anArray' => [ 1, 2, 3 ]
];


echo json_encode($obj);
$post_data = [
"item" => [
'item_type_id' => $item_type,
'string_key' => $string_key,
'string_value' => $string_value,
'string_extra' => $string_extra,
'is_public' => $public,
'is_public_for_contacts' => $public_contacts
]
];


$post_data = json_encode(post_data);
$post_data = json_decode(post_data);
return $post_data;

可以使用 json 编码一个泛型对象。

$post_data = new stdClass();
$post_data->item = new stdClass();
$post_data->item->item_type_id = $item_type;
$post_data->item->string_key = $string_key;
$post_data->item->string_value = $string_value;
$post_data->item->string_extra = $string_extra;
$post_data->item->is_public = $public;
$post_data->item->is_public_for_contacts = $public_contacts;
echo json_encode($post_data);