2011-08-10 25 views
3

couchDBを使用してUUIDを取得していますので、新しい文書をデータベースに送ることができます。しかしJson_DecodeがJSONをデコードしない

{"uuids":["af09ffd3cf4b35c2d94d1ed755000fb8"]} 

、以下のjson_decodeは失敗します:

function getUUID(){ 
    $myCurlSubmit = curl_init(); 

    curl_setopt($myCurlSubmit, CURLOPT_URL, 'http://localhost:5984/_uuids');  
    curl_setopt($myCurlSubmit, CURLOPT_HEADER, 0); 

    $response = curl_exec($myCurlSubmit); 

    curl_close($myCurlSubmit); 

    return $response; 
} 

これは期待どおりの結果を返します。

は、このUUIDを取得するためには、私はカールステートメントを使用

print_r('No match, creating new document.'); 
$uuid = json_decode(trim(getUUID())); 
var_dump(json_last_error()); 

エラーは 'int(0)'(引用符で囲まれていません)です。$ uuidはまだjson文字列です。

ありがとうございましたありがとうございました!

EDIT:

var_dump($uuid) = int(1) 

EDIT: のvar_dump(getUUID())= { "のUUID": "af09ffd3cf4b35c2d94d1ed755000fb8"]} \ N1

Iの末尾を有するであろう理由の任意の理由があります1つ、そして/ nは私のjsonで?

編集:

問題はカールで、以下の回答を見てください!

+0

'0 == JSON_ERROR_NONE'、エラーが発生しなかったことを意味します。 –

+0

私はそのJSON文字列をphp varにコピー/ペーストして、json_decodeを使って 'uuids' 1アイテム配列を正常に抽出することができました。 temp変数に 'trim(getUUID())'を保存して、 'json_decode()'を呼び出す前に期待通りの値を持つようにすることをお勧めします。 –

答えて

9

問題は、getUUID()関数でのカールの使用にあります。

CURLOPT_RETURNTRANSFERを設定する必要があります。そうでない場合は、curl_execは結果をエコーし​​、1を返します(ご覧のとおり)。

例えばcurl_execマニュアルのこのコメントを参照してください:http://www.php.net/manual/de/function.curl-exec.php#13020

+0

wow。ありがとう!私はこれを見たときにcurl_execコマンドに分離しました! – GAgnew

関連する問題