1
 //...snip..
    $result = curl_exec($ch);
    curl_close($ch);
    return $result;

PHP curl リクエストの応答は次のように表示されます

"{\"結果\":\"成功\",\"エントリ\":\"22\",\"確認\":\"はい\"}"

\ただし、出力は引用符の前にあるべきではありません。これらの引用符を削除して適切なJSONとして返すにはどうすればよいですか

{
"result":"success",
"entry":"22",
"confirm":"yes"
}

私が試したオプションはほとんどありませんreturn print_r($result)。これは期待どおりに戻っていますが、これは適切な方法ではないと思います。

PHP バージョン - 5.6.16

4

3 に答える 3

2

出力は正しく、有効な json があります。これは文字列です。

あなたがしなければならないのは、それをデコードすることだけです:

$s = "{\"result\":\"success\",\"entry\":\"22\",\"confirm\":\"yes\"}";

var_dump(json_decode($s));

.

于 2016-08-10T10:19:46.107 に答える
1

stripslashes()を使用して JSON 文字列からスラッシュを削除し、 json_decode ( ) を使用して JSON 文字列をデコードできます。

このような、

$json_string="{\"result\":\"success\",\"entry\":\"22\",\"confirm\":\"yes\"}";
$json_string=stripslashes($json_string);
$json_array=json_decode($json_string,true);
print_r($json_array);

上記の方法では、文字列からスラッシュを削除し、json_decode()を使用して JSON 文字列をデコードします。

ただし、スラッシュを使用して文字列を直接デコードすることもできます。(Thanks to @jeroen) このように、

$json_string="{\"result\":\"success\",\"entry\":\"22\",\"confirm\":\"yes\"}";
$json_array=json_decode($json_string,true);
print_r($json_array);

json_decode()の 2 番目のパラメーターは、デフォルトの動作であるオブジェクトではなく、配列内の JSON 文字列を解析することを示します。

于 2016-08-10T10:19:35.197 に答える
0

curl で次のヘッダー オプションを使用するだけで、json オブジェクトが返されます。

curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: application/json'));
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));

デフォルトの受け入れタイプは Text/Plain であるため、解析された文字列が返されます。上記のヘッダーを設定することで、json オブジェクトを受け取ります。

于 2016-08-10T10:22:57.667 に答える