如何优化很长的JSON数据?
现在主流的网络请求中都采用JSON作为其数据交互格式,这主要是因为JSON有以下优势:
但如果在开发过程中,把很长很大的JSON数据在前后端传输,那就说明设计工作没做好,应该尽量避免这种数据传输,但也可以从下面几个方面进行下优化:
在 Skylake 处理器上,各种解析器解析同一个大数据量的JSON文件的速度(以 GB/s 为单位)如下所示:
我们知道,JSON作为一种轻量级的数据交换格式,现在被广泛应用,特别是在API层,返回数据格式基本上都是JSON。但是, JSON字符串如果过长,那在网络传输中也存在耗时的 ,站在性能角度我们需要合理优化JSON。
1、服务器端 开启GZip压缩
主流的服务端都支持GZip压缩,对于一般的纯文本内容GZip压缩率在35%以上,这样做的好处也很明显:
2、 键名缩短
对于结果集而言,数据都是查询循环输出的,所以当我们把键名缩短也变相压缩了JSON文本长度。比如原本的 {"name":"张三"} 我们可以写为 {"a":"张三"}
3、JSON中的 中文避免被转为Unicode编码
现在也有不少人喜欢将JSON中的汉字转为Unicode编码,此时JSON文本内容就会变得很长,如果避免汉字转码,可以控制文本长度。
1,开启gzip,压缩率很高,即便是很长的文本,在网络中传输量也很小 。
2,不建议分次请求,除非是业务需要。连接次数过多,加大了并发的压力。
3,提醒用户点击的做法可以通过按钮反馈或loading条来做。
4,如果有可能,考虑提前预读你可以这样,在一个隐藏的 iframe 里面请求服务器,返回值是这样的: <script> parentnotifyDataArrive(YOURS_JSON_DATA); </script>
在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式:
1一种为使用eval()()函数。
2 使用Function对象来进行返回解析。
用eval函数来解析,并且使用jquery的each方法来遍历
用jquery解析JSON数据的方法,作为jquery异步请求的传输对象,jquery请求后返回的结果是json对象,这里考虑的都是服务器 返回JSON形式的字符串的形式,对于利用JSONObject等插件封装的JSON对象,与此亦是大同小异,这里不再做说明。 这里首先给出JSON字符串集,字符串集如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
代码如下:
var data="
{
root:
[
{name:'1',value:'0'},
{name:'6101',value:'北京市'},
{name:'6102',value:'天津市'},
{name:'6103',value:'上海市'},
{name:'6104',value:'重庆市'},
{name:'6105',value:'渭南市'},
{name:'6106',value:'延安市'},
{name:'6107',value:'汉中市'},
{name:'6108',value:'榆林市'},
{name:'6109',value:'安康市'},
{name:'6110',value:'商洛市'}
]
}";
var dataObj=eval("("+data+")");//转换为json对象
alert(dataObjrootlength+"个对象");
for(var i=0;i<dataObjrootlength;i++){
var obj=dataObjroot[i];
alert(objName+"--"+objvalue);
}
JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。
简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。简单来说:json就是一种在各个编程语言中流通的数据格式,负责不同编程语言中的数据传递和交互。
扩展资料
注意事项:
1,json的键值对的键部分,必须用双引号"包裹,单引号都不行(所以如果在键中出现了关键字,也被字符化了),而js中对象没有强制要求(所以在键中不允许出现关键字)。
2,json的键值对的值部分,不允许出现函数function,undefined,NaN,但是可以有null,js中对象的值中可以出现。
3,json数据结束后,不允许出现没有意义的逗号,如:{"name":"admin","age":18,},注意看数据结尾部分18的后面的逗号,不允许出现。
-Json
首先,你可以手动拼json。然后是人ajax的方式,或者windowloacation=url的方式向服务端提交。
其次,但是不管你怎么拼,都不能发送等文件到服务器!
这并不是说json格式不行,而是在页面上发送信息到服务端的时候文件类的是由浏览器自动转为流的,而你在页面上的任何脚本都不能读取文件!
使用JSON 转换工具详细解析:
这个处理过程包括将 IRI 转换为一个等价的 URL。在核心 Atom 词汇表中,icon、logo、uri、link 和 content 元素可以包含能被解除引用的 IRI,下面就对JSON 转换工具进行学习探讨。
初看起来,将 Atom 文档转换为 JSON 似乎非常简单。毕竟,Atom 只是一些 XML,并且有大量 XML 和 JSON 转换工具可用。然而,Atom 格式不仅仅是 XML 元素和属性的集合。
许多复杂的细节使得很难正确处理 Atom。本文将描述这些问题,并演示了一种由 Apache Abdera 项目实现的机制,该机制可以将 Atom 文档转换成 JSON 并生成易于理解、易于使用的完整内容。
在将一个 Atom 文档转换为JSON 转换工具 时,将获得大量富含信息的内容,并将其序列化为一种非常简单的形式。在难于解析和正确处理 XML 的环境中,您可以更加轻松地使用这种更简单的内容形式。
概述JSON定义法的相关使用技巧和说明
详细阐述JSON结构的格式说明特点
使用JSON数值结构说明介绍使用
大致讲述JSON异步的使用说明介绍
读者详细说明JSON 的使用与维护工作
这个过程面临的主要挑战是,确保重要数据和上下文不会在转换过程中丢失。以下章节将讨论转换 Atom 文档时的各个关键问题。假设读者至少对 Atom 和 JSON 有一个基本的了解。如果对它们都不熟悉,请在继续阅读之前查看一下本文末尾列出的 参考资料。
Atom 文档包含一个人类和计算机都能识别的混合信息集合。人类可读内容的恰当呈现,如条目标题、分类标签、链接标题、权限描述等等,依赖于一种在转换为 JSON 过程中必须正确保存的语言上下文。
xml:lang 是一种指定 Atom 文档所使用语言的机制。此属性可以出现在 Atom 文档中的任何位置,而且既可以被子元素继承,也可以被覆盖。xml:lang 属性的值是一个由 RFC 4646 定义的 “语言标记” ,名为 “Tags for Identifying Languag”。
这些标记提供关于文本编写所用语言、使用的脚本或编写系统的信息,以及地区性语言变化等。这类信息将影响用户代理呈现文本的方式。清单 1 所示的示例 Atom 提要演示了 xml:lang 在 Atom 文档中的用法,但是该示例没有实际意义。本系列已经用大量时间讨论了数据格式,这主要是因为几乎所有异步应用程序最终都要处理数据。如果掌握了发送和接收所有类型的数据的各种工具和技术。
并按照最适合每种数据类型的方式使用它们,那么就能够更精通 Ajax。在掌握 XML 和纯文本的基础上,再掌握JSON 转换工具,这样就能够在 JavaScript 中处理更复杂的数据结构。
本系列中的下一篇文章将讨论发送数据以外的问题,深入介绍服务器端程序如何接收和处理 JSON 转换工具的数据。还要讨论服务器端程序如何跨脚本和服务器端组件以 JSON 格式发送回数据,这样就可以将 XML、纯文本和 JSON 请求和响应混合在一起。这可以提供很大的灵活性,可以按照几乎任何组合结合使用所有这些工具。
File writeName = new File(你要存的地方); // 相对路径,如果没有则要建立一个新
//的txt文件
writeNamecreateNewFile(); // 创建新文件,有同名的文件的话直接覆盖
FileWriter writer = new FileWriter(writeName);
BufferedWriter out = new BufferedWriter(writer);
outwrite(你要写入的信息);
0条评论