Guzzle změna JSON formátu
- Laxren
- Člen | 23
Zdravím,
posílám data pomocí REST API a Guzzlu. Požadavek na druhé straně je, aby v jsonu bylo pole, namísto objektu (změna závorek). Když to ale udělám, tak vyhodí exception:
GuzzleHttp\Exception\ServerException #500
Server error: `PUT https://urladresa.cz/api/company` resulted in a `500 Internal Server Error` response:
{"type":"BackEnd","message":"JsonParseException: Unexpected character (\u0027:\u0027 (code 58)): was expecting comma to (truncated...)
Příklad:
//neakceptuje
{
...
addresses: {
one: {
...
},
two: {
...
},
}
}
//v pořádku ( změna závorek {} -> [] )
{
...
addresses: [
one: {
...
},
two: {
...
},
]
}
Příklad spojení:
Posílaná data (před encode):
Dá se nějak udělat, aby to prošlo? Budu to muset udělat bez Guzzle?
A dá se nějak lehce změnit při encode ty závorky?
Děkuji.
- Polki
- Člen | 553
V JSONu není jen změna závorek u pole…
JSON vlastně bere pole (indexované 0 – n čísly) jako pole a asociativní pole (indexované jinými hodnotami než čísly, nebo na přeskáčku) jako objekt. Tak se chová JavaScript, který JSONem popisuje objekty a pole.
Tedy není třeba jen změnit závorky, protože tím, co jsi napsal kombinuješ pole a objekt dohromady a to je nevalidní.
správně je to třeba takto:
nebo
atd.
PHP pole by mělo vypadat pak takto:
případně takto:
atd..
Jo a pokud možno nepoužívej array()
pro definování pole. Je
to zastaralý způsob. Dnes můžeš už klasicky používat []: