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
-~----------~----~----~----~------~----~------~--~---

Reply via email to