2015-12-17 65 views
1

有一个通过REST JSON发送的curl POST请求示例。Php Json数据格式

{"email": "[email protected]", "items": [{ "name": "api Name", "quantity": 10, "unit_price": 2}, { "name": "api 2", "quantity": "4", "unit_price": 3 }] 

} 

我该如何在PHP中对其进行格式化。

我曾尝试以下:

$data = array(
     'email' => '[email protected]', 
     ); 
$data['items'] = array(
     'name' => 'fruits', 'quantity' => 4, 
     'unit_price' => 7, 
     ); 

服务刚刚接受email,而忽略items

+0

该示例在'items'数组中包含两个对象,您的结构包含三个标量值。 – arkascha

回答

0

items数组是一个对象数组。你是显示字符串

+0

显示如何正确执行此操作。 – Barmar

0

一个简单的技巧是使用PHP函数json_decode()得到一个PHP数据结构,当传递给json_encode()产生你需要的字符串的地图:

var_export(json_decode(
    '{"email": "[email protected]", "items": [{ "name": "api Name", "quantity": 10, "unit_price": 2}, { "name": "api 2", "quantity": "4", "unit_price": 3 }]}', 
    TRUE 
)); 

生产:

array(
    'email' => '[email protected]', 
    'items' => array(
     0 => array(
      'name' => 'api Name', 
      'quantity' => 10, 
      'unit_price' => 2, 
     ), 
     1 => array(
      'name' => 'api 2', 
      'quantity' => '4', 
      'unit_price' => 3, 
     ), 
    ), 
) 

通过TRUE作为返回数组的第二个参数;没有它,json_decode()会生成对象而不是关联数组。

使用函数var_export()获取生成将其作为参数传递给它的数据结构的PHP代码。

在单独的脚本中使用上面的代码来获取有关您需要创建的数据结构的提示,以便在将其编码为JSON时获取所需的字符串。不要把它放到你开发的产品中。

+0

我试过了,不起作用。 – bobsr