#php #json #curl #php-curl
#php #json #curl #php-curl
Вопрос:
Я создал следующий скрипт, который выдает строку, которую я позже использую в ответе JSON. Однако она выдает ошибку, несмотря на то, что она отформатирована правильно. Что странно, если я скопирую вывод переменной непосредственно в скрипт, он работает просто отлично.
$vls_minidbqs = 'Apples;Oranges;Bananas'
$vls_dbqs = explode(";", $vls_minidbqs);
if (!empty($vls_dbqs[0])) {
$dbq0 = '"'.$vls_dbqs[0].'",rn ';
}else{
$dbq0 = '';
}
if (!empty($vls_dbqs[1])) {
$dbq1 = '"'.$vls_dbqs[1].'",rn ';
}else{
$dbq1 = '';
}
if (!empty($vls_dbqs[2])) {
$dbq2 = '"'.$vls_dbqs[2].'",rn ';
}else{
$dbq2 = '';
}
if (!empty($vls_dbqs[3])) {
$dbq3 = '"'.$vls_dbqs[3].'",rn ';
}else{
$dbq3 = '';
}
if (!empty($vls_dbqs[4])) {
$dbq4 = '"'.$vls_dbqs[4].'",rn ';
}else{
$dbq4 = '';
}
if (!empty($vls_dbqs[5])) {
$dbq5 = '"'.$vls_dbqs[5].'",rn ';
}else{
$dbq5 = '';
}
if (!empty($vls_dbqs[6])) {
$dbq6 = '"'.$vls_dbqs[6].'",rn ';
}else{
$dbq6 = '';
}
if (!empty($vls_dbqs[7])) {
$dbq7 = '"'.$vls_dbqs[7].'",rn ';;
}else{
$dbq7 = '';
}
if (!empty($vls_dbqs[8])) {
$dbq8 = '"'.$vls_dbqs[8].'",rn ';
}else{
$dbq8 = '';
}
if (!empty($vls_dbqs[9])) {
$dbq9 = '"'.$vls_dbqs[9].'",rn ';
}else{
$dbq9 = '';
}
$vls_dbqs = 'rn '.$dbq0.''.$dbq1.''.$dbq2.''.$dbq3.''.$dbq4.''.$dbq5.''.$dbq6.''.$dbq7.''.$dbq8.''.$dbq9.'';
$vls_dbqs = substr($vls_dbqs, 0,strrpos($vls_dbqs,","));
$vls_dbqs = $vls_dbqs.'rn';
Этот код выдает следующую строку:
r n «Яблоки», r n «Апельсины», r n «Бананы» r n
JSON выполняет следующее. Что странно, если я скопирую и вставлю строку непосредственно в код, в который она идет, или удалю переменную, через которую она проходит, без проблем: r n «Яблоки», r n «Апельсины», r n «Апельсины» r n
Все остальные переменные, которые я передаю, работают. Это проблема с кодировкой?
Вот код PHP / CURL, который я использую (рассматриваемый раздел «Fruit»: [$vls_dbqs], r n):
curl_setopt_array($curl, array(
CURLOPT_URL => "https://XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS =>"{rnt"data": [rn {rn "Owner": {rn "name": "XXXXXXXX",rn "id": "XXXXXXXXXXXXXXXXXXXXX",rn "email": "XXXXX@XXXXX.com"rn },rn "Mailing_State": "$vls_mailingstate",rn "Affiliate": "XXXXXXX",rn "Mailing_Apt_Unit": "$vls_apt",rn "Services_Needed": "$vls_servicesneeded",rn "DBQ_State": "$vls_mailingstate",rn "Vet_also_Service_Connected_for": "$vls_alsosc",rn "Affiliate_Email": "XXXXX@XXXXX.com",rn "Mailing_Street": "$vls_mailingstreet",rn "Co_Owner": {rn "name": "XXXXXXXXX XXXX",rn "id": "2922631000001654004"rn },rn "Full_Name": "$vls_first_name $vls_last_name",rn "Disability_7": "$vls_disability7",rn "Disability_8": "$vls_disability8",rn "Disability_3": "$vls_disability3",rn "Disability_4": "$vls_disability4",rn "Disability_5": "$vls_disability5",rn "Disability_6": "$vls_disability6",rn "Veteran_Review": "$vls_veteran_review",rn "Overall_Rating": "$vls_overallrating",rn "Fruit": [$vls_dbqs],rn "Vet_Overseas": "No",rn "Layout": {rn "name": "Standard",rn "id": "2922631000000091033"rn },rn "Lead_Source": "VetLink Solutions",rn "Disability_1": "$vls_disability1",rn "Disability_2": "$vls_disability2",rn "Email": "$vls_email",rn "Vet_Right_or_Left_Handed": [rn "$vls_dominatehand"rn ],rn "ITF_Date": "$vls_itf",rn "Multi_Select_3": [rn "$vls_gender"rn ],rn "Mailing_Zip": "$vls_mailingzip",rn "First_Name": "$vls_first_name",rn "Phone": "$vls_phone",rn "Date_of_Birth": "$vls_dob",rn "Mailing_City": "$vls_mailingcity",rn "Middle": "$vls_middle_name",rn "SSN": "$vls_ssn",rn "Expedite2": "No",rn "Last_Name": "$vls_last_name",rn "Account_Status": "XXXXXX - New Client"rn }rn ]rn}",
CURLOPT_HTTPHEADER => array(
"Authorization: Zoho-oauthtoken $refresh_token",
"Content-Type: application/json"
),
));
$response = curl_exec($curl);
curl_close($curl);
Спасибо за чтение.
Комментарии:
1. Строка json не должна иметь эти разрывы строк и табуляции. Но вместо того, чтобы пытаться вручную генерировать данные json самостоятельно, просто создайте массив с правильным форматом и запустите его через json_encode() , чтобы превратить его в действительный json. Способ проще и менее подвержен ошибкам.
2. ваш код действительно слишком плох для запуска
3. Используйте эти 2 строки кода, чтобы преобразовать его в json
$arr = array('Apples', 'Oranges', 'Bananas', 'four'); echo json_encode($arr, JSON_PRETTY_PRINT);
4. @NalinNishant Спасибо, это сделало свое дело. Я знал, что в этом случае я проделал долгий путь вокруг шины. Спасибо за ответ!