当前位置: 首页 > Web前端 > JavaScript

从JSON

时间:2023-03-26 20:47:27 JavaScript

说起JSONinstandardJSONformatjsJSONJavaScriptObjectNotation(JSON)是一种数据交换格式。虽然严格来说不是子集,但JSON非常接近JavaScript语法的子集。js转换JSONjson更接近于js支持的原生语法,所以它也内置了一个解析API:JSON.stringify该方法将JavaScript对象或值转换为JSON字符串。如果指定了替换函数,它可以有选择地替换值,或者如果指定的替换器是一个数组,则可以选择只包含数组指定的属性。第二个参数常用于删除和替换:functionreplacer(key,value){if(typeofvalue==="string"){returnundefined;}返回值;}varfoo={foundation:"Mozilla",model:"box",week:45,transport:"car",month:7};varjsonString=JSON.stringify(foo,replacer);//{"week":45,"month":7}打印类似Removethetypewherevalueisastringifthesecondparameterisanarray:varfoo={foundation:"Mozilla",model:"box",week:45、运输:“汽车”,月:7};JSON。stringify(foo,['week','month']);//'{"week":45,"month":7}'他只会保留这两个数组对应的结果第三个参数常用于formattingjson:JSON.stringify({a:2},null,"");//打印结果:'{\n"a":2\n}'//orthis:JSON.stringify({a:2},空,2);JSON.parse方法用于解析JSON字符串并构造字符串描述的JavaScript值或对象。提供了一个可选的reviver函数,用于在返回之前对结果对象执行转换(操作)。constjson='{"result":true,"count":42}';constobj=JSON.parse(json);JSON.parse解析经常报错,所以我们还需要try...catch来包裹它需要注意:JSON.parse()不允许逗号作为结尾,如:JSON.parse('{"foo":1,}');在其他方案中,如果想在JS中解析成json对象,也可以使用另一种hack方案:vara='{"foo":1,}'eval(`(${a})`)//{foo:1}可以看出它的转换很松散,甚至他也支持单引号和不加引号。其实他利用的是js的解析能力,但是在使用eval的时候也有隐患(主要是性能和安全方面)。这里的相关JSON库使用了一些json相关的,可能用到的库引入了json5json5规范,比普通的json支持更多,兼容性更好。可以说它的超集JSON-js是用来兼容ie8的,类似于官方的jsonAPImock,现在parse-json解析json的时候应该不会经常用到,它会提供更多有用的错误,这个库是在搭建基础环境的时候比较有用,也可以在一些业务场景(自定义字段,自定义表单等)中发挥巨大的作用配置文件,或者在基础库中作为使用JSONStream的解析库,可以根据jsonnode中的一些配置进行解析,从而在node中操作json,因为操作文件和转换json非常麻烦。这里我会用到这个库:jsonfile,在读取配置文件的时候也非常好用。其他格式说完了json,我们还需要了解一下其他格式。以及其优缺点BSONJSON将对象序列化为字符串,BSON将对象序列化为二进制。因为是以二进制方式序列化的,所以在时间(序列化和反序列化速度)和空间(序列化后的体积)上都优于JSON。缺点是二进制可读性不强。它还支持很多数据格式{"BSON":["awesome",5.05,1986]}将转换为:\x31\x00\x00\x00\x04BSON\x00\x26\x00\x00\x00\x02\x30\x00\x08\x00\x00\x00awesome\x00\x01\x31\x00\x33\x33\x33\x33\x33\x33\x14\x40\x10\x32\x00\xc2\x07\x00\x00\x00\x00OfficialWebsiteCSV其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不包含必须像二进制数字一样解释的数据。CSV文件包含由某种换行符分隔的任意数量的记录;Passenger,Id,Survived,Pclass,Name,Sex.Age1,0,3Braund,Mr.OwenHarris,男,222,1,1Cumings,Mrs.JohnBradley(FlorenceBriggsThayer),女,38看起来很简洁表格格式版本papaparse:这个库可以使用js来解析csv格式的YAML,并且拥有几乎所有Web编程语言都可用的解析器。它还具有一些额外的功能,如循环引用、软包装、多行键、类型转换标签、二进制数据、对象合并和集合映射。它具有很强的可读性和可写性,并且是JSON的超集,因此您可以在YAML中使用完全限定的JSON语法,一切正常。你几乎不需要引号,它解释了大多数原始数据类型(字符串、整数、浮点数、布尔值等)。books:-id:bk102author:Crockford,Douglastitle:'JavaScript:TheGoodParts'类型:ComputerParsingYAMLinjs:yamljs-yamlXMLXML语言非常灵活,易于编写,但缺点是冗长和人类难以阅读,计算机非常难以阅读,并且有很多语法并不是传达信息所必需的。Gambardella,MatthewXML开发人员指南Computer解析库:htmlparser2TOML允许定义深层嵌套数据结构。语法有点笨拙,更像是ini文件而不是JSON。这不是一个糟糕的语法,但需要一些时间来适应。[a.b.c]d='Hello'e='World'使用TOML,您一定可以节省大量时间和文件长度。很少有系统使用它或非常相似的东西作为配置,这是它最大的缺点。根本没有多少语言或库可以用来解释TOML。目前toml暂时只支持node。总结目前看来json是一种很好的交换方式,传递信息的格式有很多缺点(当然也可以通过一些库来解决),但是个人来说YAML是比较流行的,一个有未来发展空间的格式,希望大家有时间也可以研究一下参考文档:https://developer.mozilla.org...https://zhuanlan.zhihu.com/p/...