2013-07-15 26 views
0

我注意到,JsonUtils.safeEval()只有在調試會話中運行時輸入「400」形式的字符串時纔會拋出IllegalArgumentException。在生產中,不會引發異常,而是返回字符串「400」。如何在GWT中使用JsonUtils.safeEval()

意思是我將JSON字符串傳遞給此函數,但有一些服務器調用會返回一個整數或字符串。

一個變通方法是改變所有服務器返回值JSON例如值,

{"return" : 400} 

任何人有另一種方法?

回答

1

看那JsonUtils#safeEval()

的文檔拋出:

java.lang.IllegalArgumentException異常 - 如果輸入是不是有效的JSON

因此很明顯,如果輸入不是有效的JSON,它會拋出異常。 400的最簡單的JSON字符串將是{"anyKey": 400}["400"]

+3

只是爲了強調:'400'和'「hello world」'是無效的JSON。 JSON需要是一個對象或數組;請參閱http://json.org/但JavaScript的'JSON.parse()'接受這些值(以及'null','true'和'false'),這就是爲什麼它不會投入生產模式。 –

+0

@ThomasBroyer可以發佈爲答案。 +1 – NINCOMPOOP

+0

@ThomasBroyer ......謝謝你解決我的問題。我想GWT是遵循JSON規範,但Javascript更「自由」。發佈您的筆記作爲答案,我認爲這對其他人來說是一個非常有用的細節。 – Carl