首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GWT JSONParser.parseStrict

GWT JSONParser.parseStrict
EN

Stack Overflow用户
提问于 2011-09-06 03:42:21
回答 1查看 3.8K关注 0票数 0

我一直在使用JSONParser的解析方法,没有太多问题。

最近,我决定关注我看到的一则弃用通知。它建议我使用parseStrictparseLenient

因此,我决定尝试一下parseStrict

我声明了一个json字符串...

代码语言:javascript
复制
String jsonstr = "{value : [12,34],[56,78]]}";

...I确认它可以和老的parse一起工作……

代码语言:javascript
复制
JSONValue jsv = JSONParser.parse(jsonstr);

...and警告窗口告诉我jsv的值是这样的:

代码语言:javascript
复制
{"value" : [12,34],[56,78]]}

然后我在相同的字符串上使用了parseStrict

代码语言:javascript
复制
JSONValue jsv = JSONParser.parseStrict(jsonstr);

但是我的GWT应用程序崩溃了,出现了一个异常!

使用parseStrict (vs parse)有哪些要求?它怎么会被这么简单的json字符串绊倒呢?

代码语言:javascript
复制
Uncaught exception escaped
com.google.gwt.event.shared.UmbrellaException: One or more exceptions caught, see full set in UmbrellaException#getCauses
at com.google.gwt.event.shared.HandlerManager.fireEvent(HandlerManager.java:129)
......
at com.google.gwt.json.client.JSONParser.evaluate(JSONParser.java)
at com.google.gwt.json.client.JSONParser.parse(JSONParser.java:218)
at com.google.gwt.json.client.JSONParser.parseStrict(JSONParser.java:87)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-09-06 03:49:39

从最严格的意义上讲,您提供的JSON不是严格正确的。

JSON键值应该用双引号as described in the JSON spec括起来,所以您的示例JSON应该如下所示:

代码语言:javascript
复制
String jsonstr = "{\"value\" : [[12,34],[56,78]]}";

此外,您的大括号([])似乎不匹配(我也更正了这一点)。

总之,可能是缺少匹配的大括号,也可能是缺少双引号。为了找出答案,您可以将有问题的代码包装在try / catch块中,并按照堆栈跟踪的建议执行操作。也就是说,在异常上调用getCauses方法:

代码语言:javascript
复制
try {
    JSONValue jsv = JSONParser.parseStrict(jsonstr);
} catch (UmbrellaException e) {
    Set causes = e.getCauses();
    //actually find out what the problem was
}

注意:JSONParser.parse只是 ,所以在使用它时要小心!

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7312134

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档