2013-07-02 35 views
0

我有一个很大的JSON数据结构,我用Gson输出,并且遇到了一个项目的问题。处理JSON的JavaScript期望其中的一个值是一个函数,但我无法看到输出未加引号的字符串的方式。用Gson写出报价值

为清楚起见,我在我的课该成员变量:

private String myFunction = "$.foo.Bar"; 

目前,我把它变成JSON我得到的时候:

"myFunction":"$.foo.Bar" 

我需要的是:

"myFunction":$.foo.Bar 

作为背景的一部分,myFunction变量的值被传递给jQuery isFunction功能。当它作为一个字符串传入时,显然它会返回false。

我试过用自定义类型替换String并提供了一个序列化器,但是当时我被卡住了,产生了一个JsonPrimitive元素,这没有帮助。

+0

自认为是无效的JSON,尝试使用JSON序列库生成它可能会很困难。 –

+0

我怀疑这可能是一个问题。我刚刚发现了这个帖子https://groups.google.com/forum/#!topic/google-gson/Uk14q5OtXmQ,其中讨论了基本相同的问题。任何人都知道安全性是否放松? – wobblycogs

回答

1

你不能用gson做到这一点,因为它不是json.org中定义的有效json格式。

根据的性能方面的考虑,你可以这样做:

String gson = "string containing somewhere in \"myFunction\":\"$.foo.Bar\" ..."; 
gson = gson.replace("\"myFunction\":\"$.foo.Bar\"", "\"myFunction\":$.foo.Bar"); 
+0

我同意这不是有效的JSON,但我_really_需要这样的输出,所以任何解决方法将不胜感激。我真的有数百行数据都是有效的JSON,然后这一行不符合。 – wobblycogs

+0

评论更新,替换(str,str)应该相当快,取决于操作有多少负载 –

+0

这是我想出的唯一想法。我并不担心我的表现,因为我无意中遇到了错误的事情。此外,函数'$ .foo.Bar'可以改变,所以我想用一点正则表达式去掉引号。某些食物的思想虽然,谢谢。 – wobblycogs