utsjsonobject.md 7.6 KB
Newer Older
D
DCloud_LXH 已提交
1 2 3 4 5 6 7 8 9 10 11 12
# UTSJSONObject

UTSJSONObject 是 UTS 语言的内置类型,主要用来操作[匿名对象](../object.md#anonymous-object)

注意:UTSJSONObject类型的数据暂不支持响应式

## 创建实例

UTSJSONObject 对象的实例目前主要通过两种方式来创建:

* 通过[对象字面量](../literal.md#object-literal)

M
mahaifeng 已提交
13
<!-- UTSJSON.UTSJSONObject.sample_create.test -->
D
DCloud_LXH 已提交
14 15 16

* 通过 JSON 字符串

M
mahaifeng 已提交
17
<!-- UTSJSON.UTSJSONObject.sample_create1.test -->
D
DCloud_LXH 已提交
18

杜庆泉's avatar
杜庆泉 已提交
19 20
## 静态方法

D
DCloud_LXH 已提交
21
### keys(object: UTSJSONObject): Array\<String>
杜庆泉's avatar
杜庆泉 已提交
22

杜庆泉's avatar
杜庆泉 已提交
23 24 25 26 27 28
<!-- UTSJSON.UTSJSONObject.keys.description -->

<!-- UTSJSON.UTSJSONObject.keys.param -->

<!-- UTSJSON.UTSJSONObject.keys.returnValue -->

M
mahaifeng 已提交
29
<!-- UTSJSON.UTSJSONObject.keys.test -->
杜庆泉's avatar
杜庆泉 已提交
30

M
mahaifeng 已提交
31
<!-- UTSJSON.UTSJSONObject.keys.compatibility -->
杜庆泉's avatar
杜庆泉 已提交
32

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

D
DCloud_LXH 已提交
34
### assign(...items): UTSJSONObject
杜庆泉's avatar
杜庆泉 已提交
35

杜庆泉's avatar
杜庆泉 已提交
36 37 38
<!-- UTSJSON.UTSJSONObject.assign.description -->

<!-- UTSJSON.UTSJSONObject.assign.param -->
杜庆泉's avatar
杜庆泉 已提交
39

杜庆泉's avatar
杜庆泉 已提交
40 41
<!-- UTSJSON.UTSJSONObject.assign.returnValue -->

M
mahaifeng 已提交
42 43
<!-- UTSJSON.UTSJSONObject.assign.test -->

杜庆泉's avatar
杜庆泉 已提交
44
<!-- UTSJSON.UTSJSONObject.assign.compatibility -->
杜庆泉's avatar
杜庆泉 已提交
45

杜庆泉's avatar
杜庆泉 已提交
46
> 注意: 与js中的`Object.assign`不同, 这里每次返回的都是一个新的对象
杜庆泉's avatar
杜庆泉 已提交
47

D
DCloud_LXH 已提交
48
### assign\<T>(...items: T[]): T
杜庆泉's avatar
杜庆泉 已提交
49

D
DCloud_LXH 已提交
50
<!-- UTSJSON.UTSJSONObject.assign_1.description -->
杜庆泉's avatar
杜庆泉 已提交
51

D
DCloud_LXH 已提交
52
<!-- UTSJSON.UTSJSONObject.assign_1.param -->
杜庆泉's avatar
杜庆泉 已提交
53

D
DCloud_LXH 已提交
54
<!-- UTSJSON.UTSJSONObject.assign_1.returnValue -->
杜庆泉's avatar
杜庆泉 已提交
55

M
mahaifeng 已提交
56 57
<!-- UTSJSON.UTSJSONObject.assign_1.test -->

D
DCloud_LXH 已提交
58
<!-- UTSJSON.UTSJSONObject.assign_1.compatibility -->
杜庆泉's avatar
杜庆泉 已提交
59

杜庆泉's avatar
杜庆泉 已提交
60
> 注意: 与js中的`Object.assign`不同, 这里每次返回的都是一个新的对象
杜庆泉's avatar
杜庆泉 已提交
61

D
DCloud_LXH 已提交
62 63
## 实例方法

D
DCloud_LXH 已提交
64 65 66 67 68 69 70 71 72 73 74 75 76 77
### parse()

<!-- UTSJSON.UTSJSONObject.parse.description -->

<!-- UTSJSON.UTSJSONObject.parse.param -->

<!-- UTSJSON.UTSJSONObject.parse.returnValue -->

<!-- UTSJSON.UTSJSONObject.parse.test -->

<!-- UTSJSON.UTSJSONObject.parse.compatibility -->

<!-- UTSJSON.UTSJSONObject.parse.tutorial -->

D
DCloud_LXH 已提交
78 79
### get(key: string): any | null

M
mahaifeng 已提交
80
<!-- UTSJSON.UTSJSONObject.get.description -->
D
DCloud_LXH 已提交
81

M
mahaifeng 已提交
82
<!-- UTSJSON.UTSJSONObject.get.param -->
D
DCloud_LXH 已提交
83

M
mahaifeng 已提交
84
<!-- UTSJSON.UTSJSONObject.get.returnValue -->
D
DCloud_LXH 已提交
85

M
mahaifeng 已提交
86 87 88
<!-- UTSJSON.UTSJSONObject.get.test -->

<!-- UTSJSON.UTSJSONObject.get.compatibility -->
D
DCloud_LXH 已提交
89 90 91

### set(key: string, value: any | null)

M
mahaifeng 已提交
92
<!-- UTSJSON.UTSJSONObject.set.description -->
D
DCloud_LXH 已提交
93

M
mahaifeng 已提交
94
<!-- UTSJSON.UTSJSONObject.set.param -->
D
DCloud_LXH 已提交
95

M
mahaifeng 已提交
96 97 98 99 100
<!-- UTSJSON.UTSJSONObject.set.returnValue -->

<!-- UTSJSON.UTSJSONObject.set.test -->

<!-- UTSJSON.UTSJSONObject.set.compatibility -->
D
DCloud_LXH 已提交
101 102 103 104 105 106 107 108 109 110 111

### getAny(key): any | null

<!-- UTSJSON.UTSJSONObject.getAny.description -->

<!-- UTSJSON.UTSJSONObject.getAny.param -->

<!-- UTSJSON.UTSJSONObject.getAny.returnValue -->

<!-- UTSJSON.UTSJSONObject.getAny.compatibility -->

lizhongyi_'s avatar
lizhongyi_ 已提交
112
### getAny(key, def): any
lizhongyi_'s avatar
lizhongyi_ 已提交
113 114 115 116 117 118 119 120 121

<!-- UTSJSON.UTSJSONObject.getAny_1.description -->

<!-- UTSJSON.UTSJSONObject.getAny_1.param -->

<!-- UTSJSON.UTSJSONObject.getAny_1.returnValue -->

<!-- UTSJSON.UTSJSONObject.getAny_1.compatibility -->

D
DCloud_LXH 已提交
122 123 124 125 126 127 128 129 130 131
### getBoolean(key): boolean | null

<!-- UTSJSON.UTSJSONObject.getBoolean.description -->

<!-- UTSJSON.UTSJSONObject.getBoolean.param -->

<!-- UTSJSON.UTSJSONObject.getBoolean.returnValue -->

<!-- UTSJSON.UTSJSONObject.getBoolean.compatibility -->

lizhongyi_'s avatar
lizhongyi_ 已提交
132
### getBoolean(key, def): boolean
lizhongyi_'s avatar
lizhongyi_ 已提交
133 134 135 136 137 138 139 140 141

<!-- UTSJSON.UTSJSONObject.getBoolean_1.description -->

<!-- UTSJSON.UTSJSONObject.getBoolean_1.param -->

<!-- UTSJSON.UTSJSONObject.getBoolean_1.returnValue -->

<!-- UTSJSON.UTSJSONObject.getBoolean_1.compatibility -->

D
DCloud_LXH 已提交
142 143 144 145 146 147 148 149 150 151
### getNumber(key): number | null

<!-- UTSJSON.UTSJSONObject.getNumber.description -->

<!-- UTSJSON.UTSJSONObject.getNumber.param -->

<!-- UTSJSON.UTSJSONObject.getNumber.returnValue -->

<!-- UTSJSON.UTSJSONObject.getNumber.compatibility -->

lizhongyi_'s avatar
lizhongyi_ 已提交
152
### getNumber(key, def): number
lizhongyi_'s avatar
lizhongyi_ 已提交
153 154 155 156 157 158 159 160 161

<!-- UTSJSON.UTSJSONObject.getNumber_1.description -->

<!-- UTSJSON.UTSJSONObject.getNumber_1.param -->

<!-- UTSJSON.UTSJSONObject.getNumber_1.returnValue -->

<!-- UTSJSON.UTSJSONObject.getNumber_1.compatibility -->

D
DCloud_LXH 已提交
162 163 164 165 166 167 168 169
### getString(key): string | null

<!-- UTSJSON.UTSJSONObject.getString.description -->

<!-- UTSJSON.UTSJSONObject.getString.param -->

<!-- UTSJSON.UTSJSONObject.getString.returnValue -->

M
mahaifeng 已提交
170 171
<!-- UTSJSON.UTSJSONObject.getString.test -->

D
DCloud_LXH 已提交
172 173
<!-- UTSJSON.UTSJSONObject.getString.compatibility -->

lizhongyi_'s avatar
lizhongyi_ 已提交
174

lizhongyi_'s avatar
lizhongyi_ 已提交
175
### getString(key, def): string
lizhongyi_'s avatar
lizhongyi_ 已提交
176 177 178 179 180 181 182 183 184 185 186

<!-- UTSJSON.UTSJSONObject.getString_1.description -->

<!-- UTSJSON.UTSJSONObject.getString_1.param -->

<!-- UTSJSON.UTSJSONObject.getString_1.returnValue -->

<!-- UTSJSON.UTSJSONObject.getString_1.test -->

<!-- UTSJSON.UTSJSONObject.getString_1.compatibility -->

D
DCloud_LXH 已提交
187 188 189 190 191 192 193 194
### getJSON(key): UTSJSONObject | null

<!-- UTSJSON.UTSJSONObject.getJSON.description -->

<!-- UTSJSON.UTSJSONObject.getJSON.param -->

<!-- UTSJSON.UTSJSONObject.getJSON.returnValue -->

M
mahaifeng 已提交
195 196
<!-- UTSJSON.UTSJSONObject.getJSON.test -->

D
DCloud_LXH 已提交
197 198
<!-- UTSJSON.UTSJSONObject.getJSON.compatibility -->

lizhongyi_'s avatar
lizhongyi_ 已提交
199
### getJSON(key, def): UTSJSONObject
lizhongyi_'s avatar
lizhongyi_ 已提交
200 201 202 203 204 205 206 207 208 209 210 211

<!-- UTSJSON.UTSJSONObject.getJSON_1.description -->

<!-- UTSJSON.UTSJSONObject.getJSON_1.param -->

<!-- UTSJSON.UTSJSONObject.getJSON_1.returnValue -->

<!-- UTSJSON.UTSJSONObject.getJSON_1.test -->

<!-- UTSJSON.UTSJSONObject.getJSON_1.compatibility -->

### getArray(key): Array\<T> | null
D
DCloud_LXH 已提交
212 213 214 215 216 217 218

<!-- UTSJSON.UTSJSONObject.getArray.description -->

<!-- UTSJSON.UTSJSONObject.getArray.param -->

<!-- UTSJSON.UTSJSONObject.getArray.returnValue -->

M
mahaifeng 已提交
219 220
<!-- UTSJSON.UTSJSONObject.getArray.test -->

D
DCloud_LXH 已提交
221 222
<!-- UTSJSON.UTSJSONObject.getArray.compatibility -->

lizhongyi_'s avatar
lizhongyi_ 已提交
223
### getArray(key, def: Array\<T>): Array\<T>
D
DCloud_LXH 已提交
224 225 226 227 228 229 230

<!-- UTSJSON.UTSJSONObject.getArray_1.description -->

<!-- UTSJSON.UTSJSONObject.getArray_1.param -->

<!-- UTSJSON.UTSJSONObject.getArray_1.returnValue -->

M
mahaifeng 已提交
231
<!-- UTSJSON.UTSJSONObject.getArray_1.test -->
D
DCloud_LXH 已提交
232

M
mahaifeng 已提交
233
<!-- UTSJSON.UTSJSONObject.getArray_1.compatibility -->
杜庆泉's avatar
杜庆泉 已提交
234

lizhongyi_'s avatar
lizhongyi_ 已提交
235 236 237 238 239 240 241 242 243 244 245 246 247
### getArray(key): Array\<any> | null

<!-- UTSJSON.UTSJSONObject.getArray_2.description -->

<!-- UTSJSON.UTSJSONObject.getArray_2.param -->

<!-- UTSJSON.UTSJSONObject.getArray_2.returnValue -->

<!-- UTSJSON.UTSJSONObject.getArray_2.test -->

<!-- UTSJSON.UTSJSONObject.getArray_2.compatibility -->


lizhongyi_'s avatar
lizhongyi_ 已提交
248
### getArray(key, def: Array\<any>): Array\<any>
lizhongyi_'s avatar
lizhongyi_ 已提交
249 250 251 252 253 254 255 256 257 258 259

<!-- UTSJSON.UTSJSONObject.getArray_3.description -->

<!-- UTSJSON.UTSJSONObject.getArray_3.param -->

<!-- UTSJSON.UTSJSONObject.getArray_3.returnValue -->

<!-- UTSJSON.UTSJSONObject.getArray_3.test -->

<!-- UTSJSON.UTSJSONObject.getArray_3.compatibility -->

D
DCloud_LXH 已提交
260
### toMap(): Map\<string, any>
D
DCloud_LXH 已提交
261 262 263 264 265 266 267

<!-- UTSJSON.UTSJSONObject.toMap.description -->

<!-- UTSJSON.UTSJSONObject.toMap.param -->

<!-- UTSJSON.UTSJSONObject.toMap.returnValue -->

M
mahaifeng 已提交
268
<!-- UTSJSON.UTSJSONObject.toMap.test -->
D
DCloud_LXH 已提交
269 270 271 272 273

<!-- UTSJSON.UTSJSONObject.toMap.compatibility -->

<!-- UTSJSON.UTSJSONObject.tutorial -->

杜庆泉's avatar
杜庆泉 已提交
274 275 276



杜庆泉's avatar
杜庆泉 已提交
277
## 常见问题
杜庆泉's avatar
杜庆泉 已提交
278

雪洛's avatar
雪洛 已提交
279 280 281 282 283 284 285 286 287 288 289 290 291
#### 目标语言为js时UTSJSONObject实例方法可以被覆盖

> 如非必要请勿利用此特性

如下代码会将getString覆盖为1

```typescript
const a = {
  getString: 1
}
console.log(a.getString) // 1
```

杜庆泉's avatar
杜庆泉 已提交
292
#### UTSJSONObject 与 type 相互转换
杜庆泉's avatar
杜庆泉 已提交
293

杜庆泉's avatar
杜庆泉 已提交
294
可以使用下面的代码,进行 `UTSJSONObject``type` 转换
杜庆泉's avatar
杜庆泉 已提交
295

M
mahaifeng 已提交
296
<!-- UTSJSON.UTSJSONObject.convert.test -->
杜庆泉's avatar
杜庆泉 已提交
297

298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335
## Android 平台方法

* 目前 UTSJSONObject 类型编译到 kotlin 为 io.dcloud.uts.UTSJSONObject


::: preview

> UTS

```ts
// 创建一个kotlin hashmap
let kotlinMap = new kotlin.collections.HashMap<string,number>()
kotlinMap.put("a",111)
kotlinMap.put("b",2)
// 转换为UTSJSONObject
let utsObj = new UTSJSONObject(kotlinMap)
console.log(utsObj)
// UTSJSONObject 转换为 Map
let nextMap = utsObj.toMap()
console.log(nextMap)
```

> Kotlin

```kotlin
// 创建一个kotlin hashmap
var kotlinMap = kotlin.collections.HashMap<String, Number>();
kotlinMap.put("a", 111);
kotlinMap.put("b", 2);
// 转换为UTSJSONObject
var utsObj = UTSJSONObject(kotlinMap, UTSSourceMapPosition("utsObj", "pages/index/helloView.uvue", 33, 8));
console.log(utsObj);
// UTSJSONObject 转换为 Map
var nextMap = utsObj.toMap();
console.log(nextMap);
```

:::