The top-level data is not an array. It's an object with two keys, "jewelry" and "metalwork", which contain arrays. See the diagrams in http://www.json.org/
You need to call data.keySet() and iterate through the keys. On Aug 19, 1:25 pm, Tarek <[email protected]> wrote: > Hi, > > I'm trying to parse a JSON value returned by my PHP script. The > returned JSON string is valid and the project compiles just fine. The > problem I'm running into is that JavaScript throws a "(TypeError): > data.isArray() is null". > > JavaScript throws that same exception for isTYPE method except for > isNull (which returns 'null'). I seem to be missing a step or two in > getting GWT to recognize that my JSON string is a multi-dimensional > array. > > -- BEGIN JSON String -- > { > "jewelry": [ > { > "ID": "2", > "item": "Minos", > "description": "Inspired by an Ancient Minoan urn.", > "price": "100", > "qty": "1" > }, > { > "ID": "4", > "item": "Muse", > "description": null, > "price": "100", > "qty": "1" > } > ], > "metalwork": [ > { > "ID": "5", > "item": "Magritte Bowls", > "description": null, > "price": "200", > "qty": "1" > }, > { > "ID": "6", > "item": "Poker Fan", > "description": null, > "price": "200", > "qty": "2" > } > ]} > > --END JSON String-- > Naturally the returned JSON isn't as pretty, but the only thing > missing are all the tabs and newlines. > > Here is how I access it: > -- BEGIN CODE SNIPPET -- > //inside the onResponseReceived method > if (200 == response.getStatusCode()){ > // process the response > JSONValue returnedJSON = JSONParser.parse(response.getText()); > PopulateTable(returnedJSON);}//end if > > . > . > . > private void PopulateTable(JSONValue data) { > try { > // Everything up to this point is works just fine. > Window.Alert > statements fire just fine > JSONArray itemsArr = data.isArray(); > // Anything from the above statement forward doesn't fire so > the > exception must be right there. > . > . > . > }//end try > catch (Exception e){ > Window.alert("Caught Excaption: '" + e.getMessage() + "'."); > }//end catch > -- END CODE SNIPPET -- > > As far as I'm aware; JSONParser returns type JSONValue and the only > way to parse that to a JSONArray is the isArray() method. Am I correct > in that assumption? If so any idea why it's balking when I try to do > it that way? > > Looking forward to your responses. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en -~----------~----~----~----~------~----~------~--~---
