# JSON 库模块帮助文档

[JSON 库使用指南](https://www.aardio.com/zh-cn/docs/library-guide/std/JSON/_.html)

## JSON 成员列表 <a id="JSON" href="#JSON">&#x23;</a>

 解析器。  
字符串化时完全符合 JSON 官方标准。  
解析使用 aardio-json 扩展语法，兼容JSON，JSONP，JSON5，部分类YAML语法,  
存取大容量数据请改用数据库组件

### JSON.equal(a,b) <a id="JSON.equal" href="#JSON.equal">&#x23;</a>
判断参数 a,b 是否恒等或者转换为 JSON 是否恒等

### JSON.load(文件路径,是否解析转义符,输入代码页) <a id="JSON.load" href="#JSON.load">&#x23;</a>
自文件加载 JSON 并返回 aardio 对象。  
此函数内部调用 JSON.tryParse 函数，参数用法基本相同。

### JSON.ndParse <a id="JSON.ndParse" href="#JSON.ndParse">&#x23;</a>
解析 ndjson/jsonl 格式，也就是每行一句 JSON 。  
兼容 JSON 行分隔符： `'\r'`、'\r  
'、'  
' 。  
此函数忽略错误行，错误行不会抛出异常。  
但会通过 io.stderr.write 函数输出错误信息与出错 JSON

### JSON.ndParse(输入文本,是否解析转义符) <a id="JSON.ndParse" href="#JSON.ndParse">&#x23;</a>
解析 ndjson。  
只能输入 UTF-8 文本，字符串不能有 BOM 编码头（一般也不可能有）

### JSON.parse <a id="JSON.parse" href="#JSON.parse">&#x23;</a>
使用宽松的 JSON 语法解析并返回表对象,  
支持自动检测输入字符串的 Unicode BOM,  
除完全支持 JSON 标准之外，并可兼容 JSONP，JSON5，支持 aardio-JSON 扩展标准。  
可解析与 JSON 兼容的 Python 字典代码（可识别 True,False,None 关键字）

### JSON.parse(输入文本,是否解析转义符,输入代码页) <a id="JSON.parse" href="#JSON.parse">&#x23;</a>
参数 @2 默认为 true,  
代码页默认为 65001 即 UTF-8 编码,  
输入文本如使用了 UTF-16 LE/BE 编码则转换为 UTF-8,  
返回对象的元表 _defined 字段记录了所有已定义的键,  
参数传入空字符串（ "" ）返回空值  
传入参数不是字符串（或 buffer），或解析遇到错误的 JSON 语法时会抛出异常

### JSON.save(文件路径，对象,是否格式化,是否使用Unicode编码) <a id="JSON.save" href="#JSON.save">&#x23;</a>
将参数 @2 指定的对象转换为 JSON 并存储到 参数 @1 指定的文件。  
其他参数为可选参数。  

此函数内部调用 JSON.stringify，参数用法与该函数相同。  
除参数 @1,@2 以外的其他参数为可选参数。  

函数执行成功返回 true，  
失败返回 null，错误信息。

### JSON.stringify <a id="JSON.stringify" href="#JSON.stringify">&#x23;</a>
转换为参数 @1 为 JSON 文本  

表对象可在元表 _defined 字段中预定义可能为 null 值的键,  
也可以在 _json 元方法中返回一个自定义的对象用于转换为 JSON。  
注意 {} 为空对象，table.array 创建 JSON 空数组，详见 table.type 函数说明。  

关于时间对象也 buffer 对象的转换规则请查看 JSON 文档。  
以及：范例 » web 应用 » JSON » 特殊数据类型

### JSON.stringify(value,prettySpace,unicodeEscape) <a id="JSON.stringify" href="#JSON.stringify">&#x23;</a>
参数 @prettySpace, @unicodeEscape 可选,默认不格式化,不使用 `\uXXXX`转义编码。  
参数 @prettySpace 可指定布尔值，也可以指定格式化使用的缩进字符串，默认为 4 个空格。  

注意即使设为不使用 `\uXXXX` 转义编码（默认选项），  
单引号以及一些可能无法直接打印的 Unicode 字符仍会进行 `\uXXXX` 转义。  
表对象中不是表对象的成员先转换。

### JSON.stringifyArray(value,prettySpace,unicodeEscape,clearNull) <a id="JSON.stringifyArray" href="#JSON.stringifyArray">&#x23;</a>
如果参数 @value 未声明数组类型，则添加类型声明,  
空数组（即使不是纯数组）会返回`[]`而不是 `{}`,其他参数与 JSON.stringify 相同

### JSON.strip() <a id="JSON.strip" href="#JSON.strip">&#x23;</a>
将一个对象转换为 JSON ,再转换为 aardio 纯值类型对象。  
纯值类型指的是字符串、数值、布尔值、buffer、指针、纯值表。  
关于纯值与纯值表可参考 table.parseValue 函数的说明。  
纯值支持原值序列化，并与 JSON 兼容。  

JSON.strip 兼容 Python 对象。  

如果提前导入  dotNet.json ，  
则可以用此函数将 .NET 对象转为 aardio 纯值对象

### JSON.tryParse(输入文本,是否解析转义符,输入代码页) <a id="JSON.tryParse" href="#JSON.tryParse">&#x23;</a>
解析 JSON 并返回 aardio 对象  
作用与参数用法与parse函数一样,  
请参考该函数说明  

唯一的区别是：  
parse函数遇到JSON语法错误时抛出异常  
而tryParse遇到错误时返回 null,错误信息
