2013-07-02 71 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