Goedemorgen,

Ik probeer een koppeling te maken met MyParcel via JSON, maar krijg steeds de melding:

Object value found, but an array is required

Zo moet het worden:
POST https://api.myparcel.nl/shipments HTTP/1.1
Content-Type:application/vnd.shipment+json;charset=utf-8 Authorization:basic **knip**
{
"data":{
"shipments":[
{
"recipient":{
"cc":"NL",
"city":"Hoofddorp",
"street":"Hoofdweg",
"number":"679",
"postal_code":"2131BC",
"person":"Mr. Parcel",
"phone":"0213030315",
"email":"[email protected]"
},
"options":{
"package_type":1,
"only_recipient":1,
"signature":1,
"return":1,
"insurance":{
"amount":50000,
"currency":"EUR"
},
"large_format":0
},
"carrier":1
},
{
"recipient":{
"cc":"NL",
"city":"Amsterdam",
"street":"Dorpstraat",
"number":"123",
"postal_code":"1020BC",
"person":"Mrs. Parcel",
"phone":"02012343546",
"email":"[email protected]"
},
"options":{
"package_type":1,
"only_recipient":0,
"signature":0,
"return":0
},
"carrier":1
}
]
}
}


En dit probeer ik:

$responce['data'] = array(
					"shipments" => array(
									"recipient" => array(
											"cc" => "NL",
											"city" => "Hoofddorp",
											"street" => "Hoofdweg",
											"number" => "679",
											"postal_code" => "2131BC",
											"person" => "Mr. Parcel",
											"phone" => "01234565789",
											"email" => "[email protected]"),
									"options" => array(
											"package_type" => 1,
											"only_recipient" => 1,
											"signature" => 1,
											"return" => 1,
											"insurance" => array(
												"amount" => 5000,
												"currency" => "EUR"),
											"large_format" => 1),
									"carrier" => 1
									)
									);
									
											
$data_string = json_encode($responce);
Wel vreemd, want je bouwt toch echt een array op, die je als JSON-string opslaat. Ik denk dat er misschien is fout gaat bij het verwerken van $data_string?

PS: Het is response ;-)
Als ik print_r data_string doe krijg ik:
{"data":{"shipments":{"recipient":{"cc":"NL","city":"Hoofddorp","street":"Hoofdweg","number":"679","postal_code":"2131BC","person":"Mr. Parcel","phone":"01234565789","email":"[email protected]"},"options":{"package_type":1,"only_recipient":1,"signature":1,"return":1,"insurance":{"amount":5000,"currency":"EUR"},"large_format":1},"carrier":1}}}


En de complete error:
object(stdClass)#1 (2) { ["errors"]=> array(1) { [0]=> object(stdClass)#2 (3) { ["code"]=> int(0) ["fields"]=> array(1) { [0]=> string(14) "data.shipments" } ["human"]=> array(1) { [0]=> string(59) "data.shipments Object value found, but an array is required" } } } ["message"]=> string(73) "Failed validation agains JSON-SCHEMA shipment/post_shipments_request.json" }
Moet het niet dit zijn? Je kunt immers meerdere shipment hebben dus je vergat een array niveau:

<?php
$response['data'] = array(
                    "shipments" => array(
										array(
										"recipient" => array(
												"cc" => "NL",
												"city" => "Hoofddorp",
												"street" => "Hoofdweg",
												"number" => "679",
												"postal_code" => "2131BC",
												"person" => "Mr. Parcel",
												"phone" => "01234565789",
												"email" => "[email protected]"),
										"options" => array(
												"package_type" => 1,
												"only_recipient" => 1,
												"signature" => 1,
												"return" => 1,
												"insurance" => array(
													"amount" => 5000,
													"currency" => "EUR"),
												"large_format" => 1),
										"carrier" => 1
										)
									)
								);
                                    
                                            
$data_string = json_encode($response);
?>
Ben eruit!

Ik miste de [ en ] bij Shipments
Klopt, en dat is omdat je een array niveau te weinig had.

Reageren