我使用net.sf.json.JSONObject創建一些數據被髮送到前端應用,以及我與交互的代碼不喜歡它的方式加入報價標記每個字段名稱。刪除引號
例如:
myString = new JSONObject().put("JSON", "Hello, World!").toString();
生成字符串{ 「JSON」: 「你好,世界」}。
我想這回是什麼{JSON:「你好,世界」} - 周圍沒有「JSON」行情。我需要做些什麼才能做到這一點?
我使用net.sf.json.JSONObject創建一些數據被髮送到前端應用,以及我與交互的代碼不喜歡它的方式加入報價標記每個字段名稱。刪除引號
例如:
myString = new JSONObject().put("JSON", "Hello, World!").toString();
生成字符串{ 「JSON」: 「你好,世界」}。
我想這回是什麼{JSON:「你好,世界」} - 周圍沒有「JSON」行情。我需要做些什麼才能做到這一點?
的javadoc說
通過了toString方法 嚴格符合JSON sysntax規則產生的文本。
如果您想要符合JSON語法規則,請勿刪除引號。
或者,如果你不關心規則,你可以創建你自己的簡單的方法去構造這個字符串。
而且,替代報價的2個事件是有效的,因爲@CharlesLeaf說。
我可以問你爲什麼要這樣做嗎?它不會節省請求中傳輸的總字節數。
在任何情況下,我會說你必須寫一些東西,正則表達式或其他東西,用/\"([^"]+)\"\:/
代替$1
。我不太流利的Java,所以我實際上無法再幫忙。
我試圖改變一些後端代碼,而不是與前端搞得太多......而前端似乎不喜歡引號。所以我只是試圖給前端提供它想要的東西。 – 2010-06-01 18:56:06
看起來像前端的錯誤。但無論如何,我的正則表達式應該能夠幫助你。用'$ 1:'替換'\「([^」] +)\「:',以''1'的方式替換''$ 1''將在您的示例'JSON'中匹配 – CharlesLeaf 2010-06-01 19:01:02
是的,它會...當你通過使用nodejs的websockets傳輸大量數據時,你在管道上保存的數據量並不會傳輸雙引號,這是非常重要的 – 2015-07-28 17:52:30
的JSON definition描述了每對爲一個字符串:值,所以你不能指望net.sf庫違反特定的合同。如果你擔心在返回一些JavaScript代碼時能夠訪問這些值(如果這是你正在做的),那麼你就不需要了。
var str = {"JSON": "Hello, World"};
var obj = eval(str);
alert(obj.JSON); // Alerts "Hello, World"
如果OP想要一個字符串,我認爲它是可以的但是如果OP想要從{「JSON」:「Hello world」}創建一個對象,他可以使用'jQuery.parseJSON(「這裏是一個json字符串」);' – 2012-01-17 16:01:39
我遇到了幾個Web應用程序/庫,如支持JSON的amCharts,如JavaScipt輸入,您的請求是必需的,因爲不支持真正的JSON。
你可以做的是創建一個通用的JavaScript函數,並使用一點RegEx過濾JSON。
function CleanJSONQuotesOnKeys(json) {
return json.replace(/"(\w+)"\s*:/g, '$1:');
}
爲什麼你想這樣做?(我很好奇) – OscarRyz 2010-06-01 18:44:15
因爲我正在與現有的代碼相互作用,喜歡它的方式。 (只是編輯了原來的問題,使其更清楚。) – 2010-06-01 18:56:36