![](/img/trans.png)
[英]error receiving JSON is badly formatted or it contains invalid character php curl
[英]Getting "Invalid Key Character" With generated PHP string on Json Curl
因此,我正在嘗試使用 php 與項目的 curl 進行通信,並使用 POST 方法從我的數據庫發送數據。
但我收到“無效的關鍵字符”錯誤,我真的不知道還能做些什么來解決這個問題......
編碼:
<?php
require_once('autoload.php');
require_once('vendor/autoload.php');
$conexao = new Conexao();
$produtos = $conexao->select('produto', '*', 'LIMIT 1');
foreach ($produtos as $produto) {
try {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "url");
$headers = array();
$headers[] = "Content-Type: application/json";
$headers[] = "X-Api-Key: key";
$headers[] = "X-App-Key: key";
curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
curl_setopt($curl, CURLOPT_HEADER, $headers);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_POST, TRUE);
$status = 1;
if ($produto['status'] == 1){
$status = 0;
}
$valores = '
{
"product":{
"name":"'. trim($produto['descricao']) .'",
"sku":"'. trim($produto['cod_est']) .'",
"description":"'. trim($produto['obs']) .'",
"price":'. $produto['valor_vend'] .',
"saleprice":'. $produto['vl_promo'] .',
"categories": [
"'. trim($produto['ender3']) .'"
],
"properties": [],
"related_products": [],
"special_options": [],
"slug":"'. str_replace(' ', '-', trim($produto['descricao'])) .'",
"excerpt":"'. trim($produto['descricao']) .'",
"factory_price":'. $produto['ult_custo'] .',
"installments": 1,
"shippable":0,
"fixed_quantity": 999,
"gtin_code":"'. trim($produto['cod_fabr']) .'",
"ncm_code":"'. trim($produto['cod_ncm']). '",
"track_stock": 0,
"enabled":' . $status . ',
"video": "",
"weight":"' . $produto['peso_brut']. '",
"height": "' . $produto['espessura'] . '",
"width": "' . $produto['largura'] . '",
"depth": "' . $produto['compriment'] . '",
"meta": "",
"seo_title": "",
"seo_description":"'. trim($produto['descricao']) . '",
"seo_keywords":"'. str_replace(' ',',',strtolower(trim($produto['descricao']))) .'"
}
}';
curl_setopt($curl, CURLOPT_POSTFIELDS, $valores);
$response = curl_exec($curl);
curl_close($curl);
print_r($response);
}
catch (Exception $e){
echo 'Ocorreu um Erro: ' . $e;
}
}
錯誤:
HTTP/1.1 200 OK Content-Type: text/html; charset=UTF-8 Content-Length: 263 Connection: keep-alive Cache-Control: max-age=1, public Date: Wed, 27 Dec 2017 19:09:30 GMT Expires: Wed, 27 Dec 2017 19:09:31 GMT Server: Apache Vary: Accept-Encoding X-Cache: Miss from cloudfront Via: 1.1 f2e2a7eca4778c8776461616fad77017.cloudfront.net (CloudFront) X-Amz-Cf-Id: urR4k92zkT2PCfimpCNAf5-uBmUi46nvHM6J-aWVZ8OxDYZUPteEWg== Disallowed Key Characters. "\r\n\t\t{\r\n\t\t\t\"product\":{\r\n\t\t\t\t\"name\":\"PH_CAMISA_GOLA_V_BR_12\",\r\n\t\t\t\t\"sku\":\"2129246\",\r\n\t\t\t\t\"description\":\"\",\r\n\t\t\t\t\"price\":49_000,\r\n\t\t\t\t\"saleprice\":0_000,\r\n\t\t\t\t\"categories\":_"
如果我將生成的 json 復制並粘貼到 JSONLint,則表明 json 是有效的...
有關如何解決此問題的任何提示?
您只是不要在 PHP 中手動構建 JSON 。
你首先建立你的數據結構,然后你json_encode()
整個事情......
$valores = [
"product" => [
"name" => trim($produto['descricao']),
"sku" => trim($produto['cod_est']),
"description" => trim($produto['obs']),
"price" => $produto['valor_vend'],
"saleprice" => $produto['vl_promo'],
"categories" => [
trim($produto['ender3']) // I'm not so sure here...
],
"properties" => [],
...
...
...
]
];
// $valores is an array containing your data.
$encoded = json_encode($valores);
// $encoded is a string containing encoded JSON.
json_encode()
為您處理一切(轉義等) 。 它也有一些選項——參見手冊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.