2014-05-06 60 views
0

所以我測試我的JSON驗證,並有JSON像我propertis文件:的Json與」未驗證

jsonSource = {"kind": "Listing\""} 

我得到它的春天@Value("${jsonSource}")來看,它通過:

try { 

      gson.fromJson(jsonSource, Object.class); 
      return true; 

     } catch(com.google.gson.JsonSyntaxException ex) { 
      return false; 
     } 

try { 
      new JsonParser().parse(jsonSource); 
      return true; 
     } catch (JsonParseException e) { 
      return false; 
     } 

它這麼想的驗證。

我試過jsonSource.replaceAll("\\", "\\\\");這個字符串,但沒用。 我從http://www.reddit.com/r/IAmA.json(self_text)我躲過JSON部分

我想我失去了一些東西真的很基本的這裏,好像做什麼用字符串或如何應該使用JSON引擎蓋下發生。

+0

把它們都寫*酷似你的財產文件*?由於屬性文件使用反斜線進行轉義,因此您需要將其加倍。 –

+0

是的,這是一個斜線,因爲JSON,我得到了一個斜線。所以,據我瞭解,當它被放入t字符串時,它會被轉義。猜測解決了這個問題:) –

+0

屬性讀取器在加載文件時是* unescaping *它。你應該在解析之前記錄'jsonSource' - 我相信你會發現它根本沒有斜線。 –

回答

3

我解釋這一點:

所以我測試我的JSON驗證和喜歡我的propertis文件有JSON:

jsonSource = {"kind": "Listing\""} 

正如這意味着你有一個直的Java屬性您正在以正常方式加載的文件。在這種情況下,你的字符串將作爲如果你寫Java源代碼:

String value = "{\"kind\": \"Listing\"\"}"; 
換句話說

,字符串本身包含:

{"kind": "Listing""} 

反斜槓在屬性文件中使用作爲轉義字符 - 你需要的,如果你希望它是在你的實際字符串再增加一倍:

jsonSource = {"kind": "Listing\\""} 
+0

有沒有辦法導入他們而不逃避?編輯:我不知道在網上看到簡單的方法。 –

+0

@MihkelL .:不要使用屬性文件?基本上這*屬性文件格式 - 如果你不想逃避它,你需要使用另一種格式。 –