简体中文
JSON.parse() 方法用来解析 JSON 字符串,构造由字符串描述的对象。可能返回值是: UTSJSONObject/Array/number/boolean/string 等基本数据类型
特别说明:
HBuilderX3.9.0统一为以上规范,在HBuilderX3.9.0之前版本 返回值只可能是 UTSJSONObject, 基本数据类型会转换失败
const json = `{"result":true, "count":42}`;
const obj = JSON.parse(json);
console.log(obj["count"]);
// expected output: 42
console.log(obj["result"]);
// expected output: true
注意
JSON.parse() 方法用来解析 JSON 字符串,构造由字符串描述的 JavaScript 值或对象。提供可选的 reviver 函数用以在返回之前对所得到的对象执行变换 (操作)。
参数
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
text | string | 是 | 要被解析成 JavaScript 值的字符串 |
reviver | (this : any, key : string, value : any) => any | 否 | [可选] 转换器,如果传入该参数 (函数),可以用来修改解析生成的原始值,调用时机在 parse 函数返回之前。 |
返回值
类型 |
---|
any |
class Person {
name:string = ""
age:number = 0
}
// 带泛型的parse,这里的personObj 类型是 我们定义的`Persion`类
let personObj = JSON.parse<Person>('{"name":"zhangsan","age":12}')
// 不带泛型的parse,这里的jsonObj类型是通用的`UTSJSONObject`
let jsonObj = JSON.parse('{"name":"zhangsan","age":12}')
HBuilderX 3.9+,支持JSON.parse传入泛型。
与不带泛型的JSON.parse 相比,多了一个<Persion>
尖括号 用来指定返回类型。
相比不带泛型的parse
函数,带泛型的 parse
函数,会提高反序列数据的开发效率,明确的结构数据可以提升工程健壮度
兼容性
安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |
---|---|---|---|---|---|
5.0 | √ | 3.9+ | 9.0 | √ | x |
JSON.stringify() 方法将一个 JavaScript 对象或值转换为 JSON 字符串,如果指定了一个 replacer 函数,则可以选择性地替换值,或者指定的 replacer 是数组,则可选择性地仅包含数组指定的属性
参数
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
value | any | 是 | 将要序列化成 一个 JSON 字符串的值。 |
返回值
类型 |
---|
string |
console.log(JSON.stringify({ x: 5, y: 6 }));
// expected output: "{"x":5,"y":6}"
console.log(JSON.stringify([3, 'false', boolean]));
// expected output: "[3,"false",false]"
console.log(JSON.stringify(new Date(2006, 0, 2, 15, 4, 5)));
// expected output: ""2006-01-02T15:04:05.000Z""
序列化规则说明:
类型名称 | 适应范围 | 规则 |
---|---|---|
基本类型 | number/string/boolean | 对应json格式中的 原型数据类型 |
容器数据类型 | UTSArray/UTSJSONObject | 对应json格式中的 jsonarray/jsonobject |
自定义type | 开发者使用type 声明的类型对象 | 被序列化为 jsonobject |
自定义class | 开发者使用class 声明的类型对象 | 被序列化为 空jsonobject对象: {} |
function | 对象内部声明的函数 | 被序列化为 null |
JSON.parseObject() 方法用来解析 JSON 字符串,构造由字符串描述的对象。 如果输入的是一个合法的json对象,返回一个对应的UTSJSONObject,如果是json array 或者其他格式的字符串返回null
参数
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
text | string | 是 | 要被解析成 JavaScript 值的字符串 |
返回值
类型 | 描述 |
---|---|
UTSJSONObject | null | 返回一个UTSJSONObjet 或者 null |
兼容性
安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |
---|---|---|---|---|---|
5.0 | √ | 3.9+ | 9.0 | √ | x |
JSON.parseObject() 方法用来解析 JSON 字符串,构造由字符串描述的对象,该对象的类型由泛型参数T决定 如果输入的是一个合法的json对象,返回一个对应的T对象,如果是json array 或者其他格式的字符串返回null
参数
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
text | string | 是 | 要被解析成 JavaScript 值的字符串 |
返回值
类型 | 描述 |
---|---|
T | null | 返回一个T类型对象 或者 null |
兼容性
安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |
---|---|---|---|---|---|
5.0 | 3.9+ | 3.9+ | 9.0 | 3.9+ | x |
JSON.parseArray() 方法用来解析 JSON 字符串,构造由字符串描述的数组。数组元素类型为any 如果输入的是一个合法的json数组,返回一个对应的Array,如果是json object 或者其他格式的字符串返回null
参数
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
text | string | 是 | 要被解析成 JavaScript 值的字符串 |
返回值
类型 | 描述 |
---|---|
Array<any> | null | 返回一个Array 或者 null |
兼容性
安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |
---|---|---|---|---|---|
5.0 | √ | 3.9+ | 9.0 | √ | x |
JSON.parseArray() 方法用来解析 JSON 字符串,构造由字符串描述的数组。数组元素类型由泛型T决定 如果输入的是一个合法的json数组,返回一个对应的Array,如果是json object 或者其他格式的字符串返回null
参数
名称 | 类型 | 必填 | 描述 |
---|---|---|---|
text | string | 是 | 要被解析成 JavaScript 值的字符串 |
返回值
类型 | 描述 |
---|---|
Array<T> | null | 返回一个Array 或者 null |
兼容性
安卓系统版本 | 安卓 uni-app | 安卓 uni-app-x | iOS 系统版本 | iOS uni-app | iOS uni-app-x |
---|---|---|---|---|---|
5.0 | √ | 3.9+ | 9.0 | √ | x |