Ik heb een JSON string waar ik onder het element objects enkele child's wil verwijderen in PHP, hieronder een voorbeeld van de structuur.
Merk op dat alle objecten dus in de square brackets staan. Dit is voor mij erg belangrijk dat dit intact blijft, anders wordt deze data in een andere applicatie niet geaccepteerd.
Eerst heb ik mijn normale manier gebruikt, json_decode met de waarde true aan voor omzetten naar array, maar zodra ik unset gebruik dan wordt de output ongeveer zo:
Dus de brackets worden omgezet naar een array met index keys. Vervolgens dacht ik de oplossing gevonden te hebben door een bewerking te doen door het niet naar een array te converten en de unset als volgt te doen:
Hoewel de node wél wordt verwijderd, worden er toch index keys aangemaakt. Bovendien gaat het alléén mis zodra ik unset gebruik. Ik kan dus wel met succes de json decoden naar een object en weer naar een json string encoden, zolang ik maar niet een unset commando gebruik.
Ik ben nu op zoek naar een goede tactiek hoe ik child nodes van node object kan verwijderen en toch dezelfde structuur kan aanhouden, ik ben echter bang dat dit een limiet van PHP is hoe er met array's wordt omgegaan.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| { "objects":[ { "left":0, "top":0, }, { "left":0, "top":0,}, {"left":0, "top":0, }, { "left":0, "top":0, } ], "background":"#FFFFFF", "Sc":2.441575, "centeredRotation":false } |
Merk op dat alle objecten dus in de square brackets staan. Dit is voor mij erg belangrijk dat dit intact blijft, anders wordt deze data in een andere applicatie niet geaccepteerd.
Eerst heb ik mijn normale manier gebruikt, json_decode met de waarde true aan voor omzetten naar array, maar zodra ik unset gebruik dan wordt de output ongeveer zo:
code:
1
2
3
4
5
6
7
8
9
10
11
| { "objects":{ "2":{ "left":92.28, "top":369.12 } } } |
Dus de brackets worden omgezet naar een array met index keys. Vervolgens dacht ik de oplossing gevonden te hebben door een bewerking te doen door het niet naar een array te converten en de unset als volgt te doen:
code:
1
| unset($array_data->objects[$counter]); |
Hoewel de node wél wordt verwijderd, worden er toch index keys aangemaakt. Bovendien gaat het alléén mis zodra ik unset gebruik. Ik kan dus wel met succes de json decoden naar een object en weer naar een json string encoden, zolang ik maar niet een unset commando gebruik.
Ik ben nu op zoek naar een goede tactiek hoe ik child nodes van node object kan verwijderen en toch dezelfde structuur kan aanhouden, ik ben echter bang dat dit een limiet van PHP is hoe er met array's wordt omgegaan.