JSON适合大数据传输吗?跨语言JSON数据传输需要注意什么?
1、JSON是否适合大数据量的传输?
目前是用商定好的协议,以二进制流的方式传输到对方,对方再根据协议从二进制流中解析出数据。这种方式的坏处特别明显,第一就是经常出错,经常因为双方没有协商清楚,或者因为协议变更没有及时通知到各方等而出现错误,以及因为没有详细的协议文档(以头文件定义的结构体当作文档了),所以新人很难上手。所以现在想用通用的成熟的协议来代替我们自己的协议,开发和维护都比较好。
但是还有有几个疑惑,希望大家能帮忙回答和分析一下:
1、JSON适合大数据传输吗?我们目前是CS模式,未来还有BS模式,服务器和客户端之间的数据大部分每一帧都不大,但是有个功能客户端请求波形数据,这个数据就比较大,最糟糕的可能达到20多万点(目前每个点是4字节二进制流)。
2、数据传输 JSON数据 比 二进制流数据是不是体积大很多?
3、客户端(c#)和服务端(c)使用的是不同的语言开发,那么两边用不同的JSON解析库,会有什么问题吗?
4、都知道JSON因为是字符型的所以体积才大,那有没有二进制型的JSON呢
另外 如果JSON不适合大数据量传输,那么我们就考虑将数据二进制序列化,然后传输到对方再反序列化。这里又又几个疑惑了:
1、客户端和服务端用的语言不同,两边用的是不同的序列化库会不会反序列出来的结果就不一样了。
2、如果我的对象里面带有指针,指向别的数据,那么这个对象二进制序列化,那指针指向的内容能序列化大到数据流当中吗?
反序列之后,指针指向的内容还在吗?
JSON 和 XML 一样在异构应用种可以很方便的传输数据,而 JSON 由于比 XML 更小更轻量所以在 Web 应用种更加流行。
但是随着应用层协议变的复杂,一般也会使用 JSON Schema 进行约束。
如果不是做开放平台,而只是前后的交互,可以试试 Protocol Buffer。
20多万点,一个4字节,
80万字节,800,000字节,800k左右,对吧。这个数据量问题不大,json加gzip压缩可以的。
接口格式选用json,传输前可以约定压缩一下。
这个量级应该没什么问题。
json和语言无关,非常适合异构。
最简单的就是5分钟生成一个json 直接测试时长能否接受。谢邀!JSON 作为一种更轻、更友好的 Web services客户端的格式(多采用浏览器的形式或访问 REST风格 Web服务的Ajax应用程序的形式)引起了 Web 服务供应商的注意。作为使用者,JSON的一些优点和不足还是值得大家注意的,以便在开发项目中合理利用。
JSON剖析:优点和不足
对于JSON,首先要明白JSON和XML一样也是一种简单文本格式。相对于XML,它更加易读、更便于肉眼检查。在语法的层面上,JSON与其他格式的区别是在于分隔数据的字符,JSON中的分隔符限于单引号、小括号、中括号、大括号、冒号和逗号,乍看上去,使用JSON的数据分隔符的优点可能并不那么明显,但存在一个根本性的缘由:它们简化了数据访问。使用这些数据分隔符时, JavaScript引擎对数据结构(如字符串、数组、对象)的内部表示恰好与这些符号相同。
这将开创一条比DOM技术更为便捷的数据访问途径。下面列举几个JavaScript代码片段来说明这一过程,这些代码片段会访问先前的JSON代码片段中的信息:
访问JSON中的名称: addressbook.name
访问JSON中的地址: addressbook.address.street
访问JSON中的电话号码第一位:addressbook.address.phoneNumbers[0]
如果您具备DOM编程经验,就能很快地看出区别;新手可以参看 Document Object Model 的这一外部资源,这里提供了关于数据导航的实例。
JSON的另一个优点是它的非冗长性。在XML中,打开和关闭标记是必需的,这样才能满足标记的依从性;而在JSON中,所有这些要求只需通过一个简单的括号即可满足。在包含有数以百计字段的数据交换中,传统的XML标记将会延长数据交换时间。目前还没有正式的研究表明JSON比XML有更高的线上传输效率;人们只是通过简单的字节数比较发现,对于等效的JSON和XML有效负载,前者总是小于后者。至于它们之间的差距有多大,特别是在新的XML压缩格式下它们的差距有多大,有待进一步的研究。
此外,JSON受到了擅长不同编程语言的开发人员的青睐。这是因为无论在Haskell中或 Lisp中,还是在更为主流的C#和PHP中,开发都可以方便地生成JSON。
很多事物都具有两面性,JSON亦然。JSON的非冗长性也不例外,为此JSON丢失了XML具有的一些特性。命名空间允许不同上下文中的相同的信息段彼此混合,然而,显然在JSON中已经找不到了命名空间。JSON与XML的另一个差别是属性的差异,由于JSON采用冒号赋值,这将导致当XML转化为JSON时,在标识符(XML CDATA)与实际属性值之间很难区分谁应该被当作文本考虑。
另外,JSON片段的创建和验证过程比一般的XML稍显复杂。从这一点来看,XML在开发工具方面领先于JSON。以上就是笔者为大家总结的几点关于JSON的有点与不足,由于写作匆忙,还请读者包涵。
来来来,你们谁来解析一个 200MiB 的 JSON。代码不崩算我输。
1.BSON,好像mongodb有用。 (网上有bson空位置太多,浪费字节较多的描述)
2.Google Protocol buffer,[ http://npmjs.org](https://www.npmjs.com/package/protobufjs)上有包。比自己拼接typedArray省心多了。我做过:websocket传输图片的坐标和颜色信息给浏览器。
用png工具包读取图片raw信息,得到typedArray,想要附加点标识信息再传给浏览器。
用json传给前端,好像40倍图片大小。拼接typedArray,在浏览器上截取TypedArray,可以按原图数据量得到传输。用protocol buffer,几乎跟自己手动拼接typedArray一样。所以,说到大量,我认为json不合适。BSON?BSON (Binary JSON) Serialization
为什么不用 protocol buffer?
google protobuf 听说做通信协议不错
[Msgpack](MessagePack: It"s like JSON. but fast and small.)
不适合,我们大数据传输都是tab分割的csv文件,压缩后传输
推薦閱讀:
※大家一般用什麼工具測試HTTP,json介面?
※你覺得python的字典和json差不多嗎?
TAG:Web开发 | JavaScript | Java | JSON |