JSON解析是将文本格式转换为文本格式的JSON对象的过程javascript.可以在程序中使用的对象。在JavaScript中,使用该方法的标准方法json.parse(),作为JavaScript标准指定。

使用json.parse()

JavaScript程序可以从各种源读取JSON对象,但最常见的源是数据库或REST API。从这些源读取的JSON对象以“扁平”字符串格式输入包含对象的键值对的JavaScript程序。

要创建有效的字符串变量,必须使用单引号围绕JSON字符串。

让Flatjson ='{“a”:“b”,“c”:1,“d”:{“e”:2}}';

json.parse()需要一个参数:将扁平的JSON字符串转换为JSON对象。json.parse()直接接受纯JSON字符串或作为Javascript变量。传递变量比传递一个扁平的长JSON字符串更容易,也更易读。

json.parse('a“,”b“,”c“,1}');让Flatjson2 ='{“a”:“b”,“c”:1,“d”:{“e”:2}}';json.parse(Flatjson2);

json.parse()采用可选的第二个参数,称为“Reviver”。Reviver是转换JSON数据的函数json.parse()不能自行处理。这个复兴函数示例处理未定义的值:

让flatJSON3 = '{“a”“b”、“c”:1、“d”:{“e”:2}}';if(typeof value === 'undefined') {return null;};让parsed = JSON。解析(flatJSON3兴奋剂);

修改将空值和复杂对象转换为有效的JavaScript对象。下一节进入了如何使用常见示例完成的具体细节。

json.parse()本身无法执行功能或执行计算。JSON对象只能按住简单的数据类型而非可执行代码。

如果将代码强制放入带有字符串的JSON对象中,则必须使用Javascripteval()函数将其转换为Javascript解释器能够理解的内容。这个过程很容易出错,并且经常导致转换后的代码的作用域出现问题。

Revivers具有将字符串数据转换为有效的JavaScript类型的特定目的。您应该在reviver函数中进行转换,尽可能简单。在极少数情况下,专门的转换可能需要大量的计算。

处理json.parse()具有Revivers的特殊案例

错误处理

格式不正确的数据传递给json.parse()提出错误,停止处理,并返回任何已处理的数据,即使JSON的其余部分是正确的。如果发生错误,请不要假设json.parse()返回一个特定的值。

根据编写程序的方式不同,错误可能会导致Javascript代码的其余部分无法执行。包装要求json.parse()在尝试捕获声明中,因此您可以明确指定如果解析失败会发生什么。

尝试{json.parse(输入);}捕获(e){返回未定义;//或任何你想要的行动都在这里}

阵列数据

json.parse()将数组数据转换为JavaScript数组。数组数据必须是有效的JSON字符串。

这是不常见的用法json.parse()。在代码中声明数组比先使用JSON更容易。尽可能在Javascript程序中声明数组。

日期

日期不是有效的JSON类型。将特定格式的字符串转换为JavaScript日期类型是使用后的常见额外步骤json.parse()。以下几个例子如下所示。

如果使用ISO标准日期格式,则将字符串转换为日期的Reviver函数可能如下所示:

函数reviver(key,值){if(value.match(/ ^ [0-9] {4}  -  [0-9] {2}  -  [0-9] {2} $ /)){返回新日期(价值);}}

Javascript日期对象将各种字符串格式转换为日期。总是检查结果日期是否有意义,即使日期对象“理解”它的格式。这是一个字符串转换的示例,导致无效的真实日期:

//转换为有效的日期:02/16/2021解析('{“测试”:“2021-02-16”}’);//转换为无效的日期:02/30/2021解析('{“测试”:“2021-02-30”}’);

空值

null值和空字符串(“”)是有效的JSON值,但未确定的状态在JSON中无效。json.parse()如果遇到未定义的值将失败。

在JSON字符串中搜索未定义的值是此问题的可能解决方法,但请注意不要匹配字符串中“未定义”单词的任何实例。更好的解决方案是搜索并用类似的空值类型替换未定义的值:

让parsedval =(typeof值==='未定义')?null:值;

安全使用JSON.parse ()

json.parse()在函数中覆盖其限制,处理适合您需要的特殊情况。在闭包中包含一个复兴函数来处理常见的数据转换需求。

当您需要比默认的Reviver函数可以处理的更专业的数据转换时,将第二个Reviver函数添加为您的安全解析功能的参数。在默认的Reviver函数结束时调用第二个Reviver函数。

将所有这些与前面的代码示例结合起来,下面是一个简单的安全JSON解析函数:

function safejsonparse(JSON,Reviver){函数defaultReviver(键,值){if(value.match(/ ^ [0-9] {4}  -  [0-9] {2}  -  [0-9] {2}$ /)){返回新日期(价值);}如果(typeof值==='未定义'){返回null;}如果(reviver!==未定义){reviver();试试{让json = json.parse(json,defaultreviver);捕获(e){返回null;}}

结论

json.parse()是将字符串形式的JSON数据转换为Javascript对象的关键方法。可以转换简单或复杂的对象,但绝不应该转换计算或代码,例如for循环

参加我们的编程纳米迪尔格的介绍188金宝搏安不安全今天要了解有关JSON解析的更多信息json.parse()和其他编程概念!

开始学习