以正确的方式创buildJSON对象

我想创build一个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 } } 

我如何将创build的JSON代码封装在“item”中:{JSON代码在这里}。

通常情况下,你会做这样的事情:

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

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

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

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

虽然这里发布的其他答案工作,我发现以下方法更自然:

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

你只需要在你的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);