Это то, что я использовал недавно, я нашел это в сообщении в блоге, которое я не помню.
$post=array(
"a"=>"one",
"b"=>"two",
"c"=>"three"
);
$values = json_encode($post);
$session = curl_init($request);
curl_setopt($session, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt ($session, CURLOPT_POST,1);
curl_setopt ($session, CURLOPT_POSTFIELDS, $values);
// Tell curl not to return headers, but do return the response
curl_setopt($session, CURLOPT_HEADER, false);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($session);
curl_close($session);
return json_decode($response);
Надеюсь, это поможет.