json.md 4.2 KB
Newer Older
D
DCloud_LXH 已提交
1
# JSON
D
DCloud_LXH 已提交
2

D
DCloud_LXH 已提交
3
## 静态方法
D
DCloud_LXH 已提交
4 5 6

### parse

W
x  
wanganxp 已提交
7
JSON.parse() 方法用来解析 JSON 字符串,构造由字符串描述的对象。可能返回值是: UTSJSONObject/Array/number/boolean/string 等基本数据类型
杜庆泉's avatar
杜庆泉 已提交
8 9


10
> 特别说明:
杜庆泉's avatar
杜庆泉 已提交
11
> HBuilderX3.9.0统一为以上规范,在HBuilderX3.9.0之前版本 返回值只可能是 UTSJSONObject, 基本数据类型会转换失败
杜庆泉's avatar
杜庆泉 已提交
12
> JSON.parse 目前仅支持第一个参数
D
DCloud_LXH 已提交
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

```ts
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格式,则会返回 null
Q
qiang 已提交
29
- JSON.parse 接口内部通过[特殊方式读取了范型类型](../generics.md#使用限制),不支持传入动态的范型:比如将外层方法的普通范型参数传入 JSON.parse。
D
DCloud_LXH 已提交
30

杜庆泉's avatar
杜庆泉 已提交
31

D
DCloud_LXH 已提交
32
### parse(text, reviver?)
杜庆泉's avatar
杜庆泉 已提交
33

D
DCloud_LXH 已提交
34
<!-- UTSJSON.JSON.parse.description -->
杜庆泉's avatar
杜庆泉 已提交
35

D
DCloud_LXH 已提交
36 37
<!-- UTSJSON.JSON.parse.param -->

D
DCloud_LXH 已提交
38
<!-- UTSJSON.JSON.parse.returnValue -->
D
DCloud_LXH 已提交
39 40

 ```ts
杜庆泉's avatar
杜庆泉 已提交
41 42 43
class Person {
    name:string = ""
    age:number = 0
杜庆泉's avatar
杜庆泉 已提交
44 45 46
}

// 带泛型的parse,这里的personObj 类型是 我们定义的`Persion`类
杜庆泉's avatar
杜庆泉 已提交
47
let personObj = JSON.parse<Person>('{"name":"zhangsan","age":12}')
杜庆泉's avatar
杜庆泉 已提交
48 49
// 不带泛型的parse,这里的jsonObj类型是通用的`UTSJSONObject`
let jsonObj = JSON.parse('{"name":"zhangsan","age":12}')
D
DCloud_LXH 已提交
50
```
杜庆泉's avatar
杜庆泉 已提交
51

Q
qiang 已提交
52 53
HBuilderX 3.9+,支持JSON.parse传入[泛型](../generics.md)

杜庆泉's avatar
杜庆泉 已提交
54 55
与不带泛型的JSON.parse 相比,多了一个`<Persion>` 尖括号 用来指定返回类型。

杜庆泉's avatar
杜庆泉 已提交
56
相比不带泛型的`parse`函数,带泛型的 `parse`函数,会提高反序列数据的开发效率,明确的结构数据可以提升工程健壮度
杜庆泉's avatar
杜庆泉 已提交
57 58


D
DCloud_LXH 已提交
59 60 61 62
<!-- UTSJSON.JSON.parse.compatibility -->

### stringify(value, replacer?, space?)

杜庆泉's avatar
杜庆泉 已提交
63 64
*注意:JSON.stringify 目前仅支持第一个参数*

D
DCloud_LXH 已提交
65
<!-- UTSJSON.JSON.stringify.description -->
杜庆泉's avatar
杜庆泉 已提交
66

D
DCloud_LXH 已提交
67
<!-- UTSJSON.JSON.stringify.param -->
D
DCloud_LXH 已提交
68

D
DCloud_LXH 已提交
69
<!-- UTSJSON.JSON.stringify.returnValue -->
D
DCloud_LXH 已提交
70 71 72 73 74 75 76 77 78 79 80 81

```ts
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""

```
D
DCloud_LXH 已提交
82

杜庆泉's avatar
杜庆泉 已提交
83 84 85 86 87 88 89
序列化规则说明:

|类型名称   |适应范围                       |规则|
|:--        |:--                            |:--|
|基本类型    |number/string/boolean          |对应json格式中的 原型数据类型|
|容器数据类型|UTSArray/UTSJSONObject         |对应json格式中的 jsonarray/jsonobject|
|自定义type  |开发者使用type 声明的类型对象    |被序列化为 jsonobject|
杜庆泉's avatar
杜庆泉 已提交
90 91
|自定义class |开发者使用class 声明的类型对象   |被序列化为 空jsonobject对象: `{}` |
|function   |对象内部声明的函数               |被序列化为 `null` |
D
DCloud_LXH 已提交
92 93 94 95 96 97


<!-- UTSJSON.JSON.stringify_1.description -->

<!-- UTSJSON.JSON.stringify_1.param -->

D
DCloud_LXH 已提交
98
<!-- UTSJSON.JSON.stringify_1.returnValue -->
D
DCloud_LXH 已提交
99

杜庆泉's avatar
杜庆泉 已提交
100
<!-- UTSJSON.JSON.stringify_1.compatibility -->
D
DCloud_LXH 已提交
101 102 103

### parseObject(text: string)

杜庆泉's avatar
杜庆泉 已提交
104 105
注意: 此函数需要 HBuilderX 3.9x 以上版本

D
DCloud_LXH 已提交
106 107 108 109 110 111 112 113
<!-- UTSJSON.JSON.parseObject.description -->

<!-- UTSJSON.JSON.parseObject.param -->

<!-- UTSJSON.JSON.parseObject.returnValue -->

<!-- UTSJSON.JSON.parseObject.compatibility -->

D
DCloud_LXH 已提交
114
### parseObject\<T\>(text: string)
D
DCloud_LXH 已提交
115

杜庆泉's avatar
杜庆泉 已提交
116 117
注意: 此函数需要 HBuilderX 3.9x 以上版本

D
DCloud_LXH 已提交
118 119 120 121 122 123 124 125 126 127
<!-- UTSJSON.JSON.parseObject_1.description -->

<!-- UTSJSON.JSON.parseObject_1.param -->

<!-- UTSJSON.JSON.parseObject_1.returnValue -->

<!-- UTSJSON.JSON.parseObject_1.compatibility -->

### parseArray(text: string)

杜庆泉's avatar
杜庆泉 已提交
128 129
注意: 此函数需要 HBuilderX 3.9x 以上版本

D
DCloud_LXH 已提交
130 131 132 133 134 135 136 137
<!-- UTSJSON.JSON.parseArray.description -->

<!-- UTSJSON.JSON.parseArray.param -->

<!-- UTSJSON.JSON.parseArray.returnValue -->

<!-- UTSJSON.JSON.parseArray.compatibility -->

D
DCloud_LXH 已提交
138
### parseArray\<T\>(text: string)
D
DCloud_LXH 已提交
139

杜庆泉's avatar
杜庆泉 已提交
140 141
注意: 此函数需要 HBuilderX 3.9x 以上版本

D
DCloud_LXH 已提交
142 143 144 145 146 147
<!-- UTSJSON.JSON.parseArray_1.description -->

<!-- UTSJSON.JSON.parseArray_1.param -->

<!-- UTSJSON.JSON.parseArray_1.returnValue -->

杜庆泉's avatar
杜庆泉 已提交
148
<!-- UTSJSON.JSON.parseArray_1.compatibility -->
149 150

<!-- UTSJSON.JSON.tutorial -->