2017-05-16 11 views
1

world!私はOLXのAPIスクリプトにいくつか問題があります。誰か助けてくれますか?JSONとCURLの問題

私はこれを返すJSON作ってるんだ:このJSONを作成するために

{ 
"access_token": "7b1cb35b4eca28be89174d75baf66e00d2728bf6", 
    "ad_list": [ 
     { 
      "id": "31dasa1d23", 
      "operation": "insert", 
      "category": 1040, 
      "subject": "Título teste - Anúncio OLX - Marília/SP", 
      "body": "Imóvel com Sala, Copa, Cozinha planejada e Gabinete, 3 Dormitórios sendo 1 suíte, Lavanderia com Área de Serviço Coberta, Espaço Gourmet com Churrasqueira e Chuveirão para Ducha, Garagem para 2 Carros, Cerca Elétrica e Interfone. Confira mais sobre o imóvel: http://www.silvioimoveis.com.br/imovel-residencial-professor-antonio-da-silva-penteado-marilia-sp-venda/principal/imovel/principal/5394", 
      "phone": 1433333333, 
      "type": "s", 
      "price": 260000, 
      "zipcode": "17504000", 
      "params":{ 
       "rooms": "3", 
       "garage_spaces": "2" 
      }, 
      "images": [   
       "http://homologacao.silvioimoveis.com.br/fotos/imoveis_internos/5394/2175ea284f81f03.jpg",         
       "http://homologacao.silvioimoveis.com.br/fotos/imoveis_internos/5394/bb0ff30ac2bcbae.jpg" 
      ] 
     } 
     ] 
} 

そして、私のコードは次のとおりです。

$json = '{ 
     "access_token": "'.$data['access_token'].'", 
     "ad_list": [ 
       { 
        "id": "'.$jsonGerado[0]['id'].'", 
        "operation": "'.$jsonGerado[0]['operation'].'", 
        "category": '.$jsonGerado[0]['category'].', 
        "subject": "'.$jsonGerado[0]['subject'].'", 
        "body": "'.$jsonGerado[0]['body'].'", 
        "phone": '.$jsonGerado[0]['phone'].', 
        "type": "'.$jsonGerado[0]['type'].'", 
        "price": '.$jsonGerado[0]['price'].', 
        "zipcode": "'.$jsonGerado[0]['zipcode'].'", 
        "params": { 
         "rooms": "'.$jsonGerado[0]['params']['rooms'].'", 
         "garage_spaces": "'.$jsonGerado[0]['params']['garage_spaces'].'" 
        }, 
        "images": [ 
         '.$jsonGerado[0]['images']['linkFotoPrincipal'].', 
         '.$jsonGerado[0]['images']['linkDemaisFotos'][0].', 
         '.$jsonGerado[0]['images']['linkDemaisFotos'][1].', 
         '.$jsonGerado[0]['images']['linkDemaisFotos'][2].', 
         '.$jsonGerado[0]['images']['linkDemaisFotos'][3].', 
         '.$jsonGerado[0]['images']['linkDemaisFotos'][4].', 
         '.$jsonGerado[0]['images']['linkDemaisFotos'][5].', 
         '.$jsonGerado[0]['images']['linkDemaisFotos'][6].', 
         '.$jsonGerado[0]['images']['linkDemaisFotos'][7].', 
         '.$jsonGerado[0]['images']['linkDemaisFotos'][8].', 
         '.$jsonGerado[0]['images']['linkDemaisFotos'][9].' 
        ] 
       } 
     ] 
    }'; 

CURLのコードは次のとおりです。

curl_setopt_array($curl, array(
    CURLOPT_URL => "https://apps.olx.com.br/autoupload/import", 
    CURLOPT_RETURNTRANSFER => true, 
    CURLOPT_ENCODING => "", 
    CURLOPT_MAXREDIRS => 10, 
    CURLOPT_TIMEOUT => 30, 
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 
    CURLOPT_CUSTOMREQUEST => "PUT", 
    CURLOPT_POSTFIELDS => $json 
)); 

そして、最後に、エラーは次のとおりです。

私はjson_encodeを使用していない()の$ jsonの変数に、私はRiggsFollyが言及したようにjson_encodeを使用し、

+2

JSON文字列を手動で作成しないでください。間違いは間違いありません。 PHPのデータ構造を作成してから 'json_encode($ it);'を実行すると、UTF-8でエンコードされている必要があります。スクリプトファイルに_JUST Right_がない場合は、スクリプトファイルをUTF- 8など、それはできません! – RiggsFolly

+0

この場合、json_encode($ json)を作成しますか? JSONとCURLでの私の最初の作業です。だから私はあまり理解しません。 – Mathiusso

答えて

3

を "文字列値が見つかった" ではなく "...見つかったNULL値" を得ましたJSONを自分で構築するのではなく、PHPの配列やオブジェクトを作成します。

$json_array = array(
     "access_token" => $data['access_token'], 
     "ad_list" => array(
       array(
         "id" => $jsonGerado[0]['id'], 
         "operation" => $jsonGerado[0]['operation'], 
         "category" => $jsonGerado[0]['category'], 
         "subject" => $jsonGerado[0]['subject'], 
         "body" => $jsonGerado[0]['body'], 
         "phone" => $jsonGerado[0]['phone'], 
         "type" => $jsonGerado[0]['type'], 
         "price" => $jsonGerado[0]['price'], 
         "zipcode" => $jsonGerado[0]['zipcode'], 
         "params" => array(
           "rooms" => $jsonGerado[0]['params']['rooms'], 
           "garage_spaces" => $jsonGerado[0]['params']['garage_spaces'] 
         ), 
         "images" => array(
           $jsonGerado[0]['images']['linkFotoPrincipal'], 
           $jsonGerado[0]['images']['linkDemaisFotos'][0], 
           $jsonGerado[0]['images']['linkDemaisFotos'][1], 
           $jsonGerado[0]['images']['linkDemaisFotos'][2], 
           $jsonGerado[0]['images']['linkDemaisFotos'][3], 
           $jsonGerado[0]['images']['linkDemaisFotos'][4], 
           $jsonGerado[0]['images']['linkDemaisFotos'][5], 
           $jsonGerado[0]['images']['linkDemaisFotos'][6], 
           $jsonGerado[0]['images']['linkDemaisFotos'][7], 
           $jsonGerado[0]['images']['linkDemaisFotos'][8], 
           $jsonGerado[0]['images']['linkDemaisFotos'][9] 
         ) 
       ) 
     ) 
); 

あなたはその後、$json = json_encode($json_array);を行うことができます。ここではあなたが提供するサンプルコードでそれを行うかもしれない方法の例を示します。私はそれが助けて欲しい!

+1

それは私に多くの時間と手間を省きましたので、あなたは私のUVを手に入れます – RiggsFolly

+0

ほとんどのところ...コードは次のように返します:{"access_token": "7b1cb35b4eca28be89174d75baf66e00d2728bf6"、 "ad_list":{"id": "ab013ca67cf2d50" .. }}}。私は "ad_list"の後に[]が必要です:エラーは現在{["property": "ad_list"、 "message": "オブジェクト値が見つかりましたが配列は必要です"}] ... :{"access_token": "7b1cb35b4eca28be89174d75baf66e00d2728bf6"、 "ad_list":** [** {"id": "ab01 3ca67cf2d50" ..}} **] **} – Mathiusso

+0

ああ、それを逃した!編集を行い、更新されたコードを試してみてください。 – UTAlan