# UTSJSONObject

UTSJSONObject 是 UTS 语言的内置类型,主要用来操作匿名对象

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

# 创建实例

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

const person: UTSJSONObject = {
    name: 'Tom',
    printName: () => {
      // ...
    }
}
  • 通过 JSON 字符串

// 写法1 推荐
const person: UTSJSONObject = JSON.parseObject('{"name":"Tom"}')!

// 写法2 推荐
const person: UTSJSONObject = JSON.parse<UTSJSONObject>('{"name":"Tom"}')!


// 写法3  如果 as 转换的实际类型不匹配 会导致 crash,建议先通过 `instanceof` 判断类型再进行as转换。
const parseRet = JSON.parse('{"name":"Tom"}')
if(parseRet instanceof UTSJSONObject){
  const person = parseRet as UTSJSONObject
}

# 实例方法

# get(key: string): any | null

返回指定键对应的值,如果对象中不存在此键则返回 null。

const name: string = person.get('name') as string

get 方法可以简化为使用下标运算符 [] 访问

const name: string = person['name'] as string

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

增加或更新指定键对应的值。

person.set('name', 'Tom')

set 方法可以简化为使用下标运算符 [] 赋值

person['name'] = 'Tom'

# getAny(key): any | null

获取一个 属性,返回类型是any 或者 null

参数

名称 类型 必填 描述
key string -

返回值

类型 描述
any|null 如果属性存在返回结果,不存在返回null

兼容性

Android uni-app x iOS uni-app x web uni-app x Android uni-app iOS uni-app web uni-app
3.9 4.11 4.0 3.9+ x

# getBoolean(key): boolean | null

获取一个Boolean属性,返回类型是Boolean 或者 null

参数

名称 类型 必填 描述
key string -

返回值

类型 描述
boolean|null 如果属性名存在,且类型为Boolean返回对应的结果,不存在返回null

兼容性

Android uni-app x iOS uni-app x web uni-app x Android uni-app iOS uni-app web uni-app
3.9 4.11 4.0 3.9+ x

# getNumber(key): number | null

获取一个number属性,返回类型是number 或者 null

参数

名称 类型 必填 描述
key string -

返回值

类型 描述
number|null 如果属性名存在,且类型为number返回对应的结果,不存在返回null

兼容性

Android uni-app x iOS uni-app x web uni-app x Android uni-app iOS uni-app web uni-app
3.9 4.11 4.0 3.9+ x

# getString(key): string | null

获取一个string属性,返回类型是string 或者 null

参数

名称 类型 必填 描述
key string -

返回值

类型 描述
string|null 如果属性名存在,且类型为string返回对应的结果,不存在返回null

兼容性

Android uni-app x iOS uni-app x web uni-app x Android uni-app iOS uni-app web uni-app
3.9 4.11 4.0 3.9+ x

# getJSON(key): UTSJSONObject | null

获取一个UTSJSONObject属性,返回类型是UTSJSONObject 或者 null

参数

名称 类型 必填 描述
key string -

返回值

类型 描述
UTSJSONObject|null 如果属性名存在,且类型为UTSJSONObject返回对应的结果,不存在返回null

兼容性

Android uni-app x iOS uni-app x web uni-app x Android uni-app iOS uni-app web uni-app
3.9 4.11 4.0 3.9+ x

# getArray(key): Array | null

获取一个Array属性,返回类型是Array 或者 null, 数组元素类型由泛型T决定

参数

名称 类型 必填 描述
key string -

返回值

类型 描述
Array<T>|null 如果属性名存在,且类型为Array返回对应的结果,不存在返回null

兼容性

Android uni-app x iOS uni-app x web uni-app x Android uni-app iOS uni-app web uni-app
3.9 4.11 4.0 3.9+ x

# getArray(key): Array | null

获取一个Array属性,返回类型是Array 或者 null

参数

名称 类型 必填 描述
key string -

返回值

类型 描述
Array<any>|null 如果属性名存在,且类型为Array返回对应的结果,不存在返回null

兼容性

Android uni-app x iOS uni-app x web uni-app x Android uni-app iOS uni-app web uni-app
3.9 4.11 4.0 3.9+ x

这个方法用来获取指定元素类型的数组


let obj = JSON.parseObject('{"name":"tom","tag":["student","user"]}')

// 这里得到是 Array<*>
let noGenericArray = obj!.getArray("tag")
console.log(noGenericArray)

// 这里得到是 Array<string>
let genericArray = obj!.getArray<string>("tag")
console.log(genericArray)

# toMap(): Map<string, any>

将当前 UTSJSONObject 实例转换为 Map 实例。

返回值

类型 描述
Map<string, any> 返回 Map<string, any> 类型的 map
person.toMap().forEach((value, key) => {
    console.log(key)
    console.log(value)
})

兼容性

Android uni-app x iOS uni-app x web uni-app x Android uni-app iOS uni-app web uni-app
3.9 4.11 4.0 3.9+ x

# 参见

相关 Bug

# 注意事项

需要特别注意的是: 在 Android/Ios 平台,当使用 getXXX 方法返回 对象类型时,获取的是值引用而非内存引用

此时直接修改其对象的属性,并不会体现在整个UTSJSONObject上,如果需要体现此变化,则需要手动更新对应的字段

let obj = {
    "cars":[
      {
        name:"car1",
        value:100
      }
    ]
  }
  
  let cars = obj.getArray<UTSJSONObject>("cars")
  cars![0].set("value",20)
  /**
   * 此时 obj 的属性并不会改变
   */
  console.log("obj",obj)
  // 需要手动更新obj的属性
  obj.set("cars",cars)
  /**
   *  此时obj的属性改变了
   */
  console.log("obj",obj)