JSON string verwerken?
Code (php)
Waarom geeft
geen output? het is een object?
Hoe verstuur je het? Word deze pagina door aangeroepen door bijvoorbeeld ajax?
Ben gewoon aan het experimenteren? Deze Json-result zou ik normaal via een bepaalde server op kunnen vragen, maar goed, die gaf een 401 header mee, waardoor ik maar genoodzaakt voor de test de string maar hardcoded in het script plaatstte.
Zie het als een array. Error is een onderliggende array van 'authorized, valid key', dus je zult curly syntax moeten gebruiken om die eerst te pakken krijgen, dan pas kan je error gebruiken.
Toevoeging op 08/12/2010 23:27:13:
Ik heb json_encode een true meegegeven als twee parameter. Dan gebruikt hij het diret als array. En daar kan je meer mee.
Gewijzigd op 08/12/2010 22:42:30 door - Ariën -
Als ik je print_r-uitvoer goed lees, krijgt het buitenste object dus een property met als naam "unauthorized, invalid key" ... ? wild.
Synaps Framework op 08/12/2010 22:29:09:
Hoe verstuur je het? Word deze pagina door aangeroepen door bijvoorbeeld ajax?
Afgezien van het feit dat je kan zien dat de string gewoon gedefinieerd is in dit script is het ook gewoon totaal irrelevant. Zie maar de output van print_r.
@Aar. Kijk eens naar de output van de print_r. Het object wordt nu weergeven als een soort van array. Zo kan je zien welke velden er zijn en wat er in die velden bevind.
Zoals je kunt zien is er een veld 'unauthorized, invalid key' van het type stdclasse (standaard klasse om bepaalde objecten te kunnen creëren), met daarin het object 'error', wederom is dit ook een object, met daarin de velden 'code' (kut bbcode parser haalt het zeker weg?) van het type int (zie var_dump) met de waarde 100 en het veld 'message' van het type string met de waarde 'Authorized key'.
Omdat dus 'unauthorized, invalid key' het overkoepelende object is moet je die eerst benaderen voordat je iets uit onderliggende objecten kunt benaderen.
Aangezien 'unauthorized, invalid key' geen geldige waarde is om te gebruiken als variabele naam (language.variables.basics) moet je een geintje uithalen om dat veld toch te kunnen benaderen. Dat geintje heet complex (curly) syntax: language.types.string#language.types.string.parsing.complex, op die manier kan je variabelen benaderen met namen die anders niet geldig zijn.
Overigs staat dit hele verhaal ook gewoon al op php.net uitgelegd bij json_decode (voorbeeld 2), maar dan zonder verhaal.
Verder is het wellicht handig om de documentatie van JSON eens te bekijken. Zie ook onderaan de pagina de tools.