2014-09-03 100 views
3

我正在尋找使用JSV而不是JSON來將我的ajax請求發送到我的ServiceStack服務時節省帶寬。如何將JavaScript對象(JSON)轉換爲JSV格式?

,我有以下JSON數據:

[{"201":"New York","022":"Chicago"}] 

而且我想將其轉換爲以下JSV格式:

[{201:New York,022:Chicago}] 

有沒有辦法簡單地做到這一點?我不確定處理它的最佳方式是什麼;但根據我的知識/理解,我需要分割使用:(冒號)和,(逗號)的字符串,並且需要遍歷它。但我擔心這並不能說明角色轉義。有沒有可用於解析JSV格式的官方JavaScript庫 - 我找不到一個?

+0

解釋處理JSV格式的問題.. – Swetha 2014-09-03 13:12:43

+0

我不確定什麼是處理它的最好方法,但根據我的知識/理解,我們需要使用:(冒號)和(逗號)和需要通過它循環。 – Shiljo 2014-09-03 13:16:38

+1

你不能閱讀[文檔](https://github.com/ServiceStackV3/mythz_blog/blob/master/pages/176.md)嗎? ([API](HTTP://docs.servicestack。net/text-serializers/jsv-format)) – Bergi 2014-09-03 13:28:58

回答

6

除JSS格式保存的少量字節外,JSV和JSON有什麼優勢嗎?

JSV可用於在GET請求中發送複雜類型,這是使用JSON所無法實現的。 Some of these other answers,顯示使用JSV在GET請求中發送複雜類型。

我們是否有任何JavaScript庫或函數來解析JSV?

JavaScript的官方JSV庫can be found here。它還包括一個用JavaScript實現的JsvServiceClient

我不確定什麼是處理它的最好方法,但根據我的知識/理解,我們需要使用:(冒號)和(逗號)分割字符串,並且需要循環遍歷它。

使用上述庫並避免自己解析它。

反序列化用法:

JSV.parse("<JSV String>"); 

序列化用法:

var myObject = {Id: 123, Test: [1,2,3]}; 
JSV.stringify(myObject); 

我打算使用JSV而不是JSON格式保存帶寬

除非您打算在使用異常大的數據集時,那麼使用JSV的保存可能會被否定由需要發送JavaScript JSV解析庫來處理請求。官方的JSV庫,縮小了15KB,縮小了約8KB。請記住,JSON支持已經內置在Web瀏覽器中,沒有開銷。

+1

下面是[JSV.js]的JavaScript實現(https://github.com/ServiceStack/ServiceStack/blob/master/lib/js/JSV.js)。 – mythz 2014-09-03 17:00:26

+1

@mythz真棒,顯然我不知道那裏。這當然會讓JSV更加平易近人。如果這個庫在文檔中被鏈接,這會很好。 :) – Scott 2014-09-03 17:23:45

+1

是的,當我將關於JSV的零散文檔收集到SS維基時,我會記得這麼做。但最終JSON仍然應該在瀏覽器/ JavaScript中首選,因爲它可以利用瀏覽器原生的'JSON.parse()'API和JSON自檢工具,這實際上意味着JSV.js僅對在QueryString params中序列化複雜對象非常有用,甚至當它太複雜的時候,它可能更好地被POST作爲JSON來代替。 – mythz 2014-09-03 18:20:03