2014-09-03 236 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