Error on JSON parsing

829 views
Skip to first unread message

Konstantin Zolotarev

unread,
Sep 6, 2011, 4:18:51 AM9/6/11
to google-we...@googlegroups.com
I'm trying to get JavaScriptObject from JSON String 

String looks like : 
{"id":"1","username":"admin","token":"dq77a4uslui7neqcvidajofrg0"}

I'm doing this via JSINI :

public final native JavaScriptObject userFromJson(String json) /*-{ return eval(json); }-*/;

And get this error :


14:18:24.740 [ERROR] [webpovise] Uncaught exception escaped

com.google.gwt.event.shared.UmbrellaException: Exception caught: (SyntaxError): Unexpected token :
    at com.google.gwt.event.shared.HandlerManager.fireEvent(HandlerManager.java:129)
    at com.google.gwt.user.client.ui.Widget.fireEvent(Widget.java:129)
    at com.google.gwt.user.client.ui.FormPanel$1.execute(FormPanel.java:640)
    at com.google.gwt.user.client.CommandExecutor.doExecuteCommands(CommandExecutor.java:310)
    at com.google.gwt.user.client.CommandExecutor$2.run(CommandExecutor.java:205)
    at com.google.gwt.user.client.Timer.fire(Timer.java:149)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
    at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
    at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)
    at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:337)
    at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:218)
    at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)
    at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:561)
    at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:269)
    at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)
    at com.google.gwt.core.client.impl.Impl.apply(Impl.java)
    at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:213)
    at sun.reflect.GeneratedMethodAccessor90.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
    at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
    at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)
    at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:292)
    at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:546)
    at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:363)
    at java.lang.Thread.run(Thread.java:662)
Caused by: com.google.gwt.core.client.JavaScriptException: (SyntaxError): Unexpected token :
    at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:248)
    at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)
    at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:561)
    at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:269)
    at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)
    at com.webprovise.client.presenter.LoginPresenter.userFromJson(LoginPresenter.java)
    at com.webprovise.client.presenter.LoginPresenter$2.onSubmitComplete(LoginPresenter.java:86)
    at com.google.gwt.user.client.ui.FormPanel$SubmitCompleteEvent.dispatch(FormPanel.java:115)
    at com.google.gwt.user.client.ui.FormPanel$SubmitCompleteEvent.dispatch(FormPanel.java:1)
    at com.google.gwt.event.shared.GwtEvent.dispatch(GwtEvent.java:1)
    at com.google.web.bindery.event.shared.EventBus.dispatchEvent(EventBus.java:40)
    at com.google.web.bindery.event.shared.SimpleEventBus.doFire(SimpleEventBus.java:193)
    at com.google.web.bindery.event.shared.SimpleEventBus.fireEvent(SimpleEventBus.java:88)
    at com.google.gwt.event.shared.HandlerManager.fireEvent(HandlerManager.java:127)
    at com.google.gwt.user.client.ui.Widget.fireEvent(Widget.java:129)
    at com.google.gwt.user.client.ui.FormPanel$1.execute(FormPanel.java:640)
    at com.google.gwt.user.client.CommandExecutor.doExecuteCommands(CommandExecutor.java:310)
    at com.google.gwt.user.client.CommandExecutor$2.run(CommandExecutor.java:205)
    at com.google.gwt.user.client.Timer.fire(Timer.java:149)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
    at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
    at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)
    at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessagesWhileWaitingForReturn(BrowserChannelServer.java:337)
    at com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:218)
    at com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:136)
    at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:561)
    at com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:269)
    at com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:91)
    at com.google.gwt.core.client.impl.Impl.apply(Impl.java)
    at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:213)
    at sun.reflect.GeneratedMethodAccessor90.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:103)
    at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:71)
    at com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:172)
    at com.google.gwt.dev.shell.BrowserChannelServer.reactToMessages(BrowserChannelServer.java:292)
    at com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:546)
    at com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:363)
    at java.lang.Thread.run(Thread.java:662)

Konstantin Zolotarev

unread,
Sep 6, 2011, 4:32:23 AM9/6/11
to google-we...@googlegroups.com
Just found how to fix this.

 Need to use () with json string. 
example: 
Json string :
{"id":"1","username":"admin","token":"dq77a4uslui7neqcvidajofrg0"}
must became :
({"id":"1","username":"admin","token":"dq77a4uslui7neqcvidajofrg0"}

Then eval works perfect. 

Another question. How could i get JavascriptObject using JSONParser.parseStrict() method ? Is there any example ?

Thomas Broyer

unread,
Sep 6, 2011, 4:36:28 AM9/6/11
to google-we...@googlegroups.com


On Tuesday, September 6, 2011 10:18:51 AM UTC+2, Konstantin Zolotarev wrote:
I'm trying to get JavaScriptObject from JSON String 

String looks like : 
{"id":"1","username":"admin","token":"dq77a4uslui7neqcvidajofrg0"}

I'm doing this via JSINI :

public final native JavaScriptObject userFromJson(String json) /*-{ return eval(json); }-*/;

Do not use eval(), unless you're absolutely sure of the origin of your JSON string (and even then –because you actually cannot be absolutely sure–, a quick sanity-check is always welcome).

 
And get this error :


14:18:24.740 [ERROR] [webpovise] Uncaught exception escaped

com.google.gwt.event.shared.UmbrellaException: Exception caught: (SyntaxError): Unexpected token :

That's because the "{" is seen as opening a block of code, so it later chokes on the ":" which is not legal in an expression context.

Y2i

unread,
Sep 6, 2011, 1:25:11 PM9/6/11
to google-we...@googlegroups.com


On Tuesday, September 6, 2011 1:32:23 AM UTC-7, Konstantin Zolotarev wrote:
Another question. How could i get JavascriptObject using JSONParser.parseStrict() method ? Is there any example ?

If you get JSON strings from a server may be you can use JsonpRequestBuilder which allows cross-domain requests and nicely integrates overlay types.
requestObject takes care of parsing and returns a strongly-type object 

Fabricio Pizzichillo

unread,
Sep 6, 2011, 2:32:04 PM9/6/11
to google-we...@googlegroups.com
Hi.
Take a look on this proyect http://code.google.com/p/piriti/

2011/9/6 Konstantin Zolotarev <Konstantin...@gmail.com>

--
You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group.
To view this discussion on the web visit https://groups.google.com/d/msg/google-web-toolkit/-/V7Fm3CLk-_MJ.
To post to this group, send email to google-we...@googlegroups.com.
To unsubscribe from this group, send email to google-web-tool...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.

Reply all
Reply to author
Forward
0 new messages