# UTSJSONObject

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

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

# 创建实例

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

      const person : UTSJSONObject = {
        name: 'Tom',
        printName: () => {
          // ...
        }
      }
      //返回指定键对应的值,如果对象中不存在此键则返回 null。
      let name : string = person["name"] as String
      //get 方法可以简化为使用下标运算符 `[]` 访问
      name = person['name'] as string
      //增加或更新指定键对应的值。
      person.set('name', 'Tom1')
      //set 方法可以简化为使用下标运算符 `[]` 赋值
      person['name'] = 'Tom2'
  • 通过 JSON 字符串
      // 写法1 推荐
      let person1 : UTSJSONObject = JSON.parseObject('{"name":"Tom"}')!

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


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

# 静态方法

# keys(object: UTSJSONObject): Array<String>

以数组的形式返回指定UTSJSONObjetc 对象内可枚举属性的名称列表

参数

名称 类型 必填 默认值 兼容性 描述
item UTSJSONObject - - 需要检索的UTSJSONObject 实例对象

返回值

类型 描述
Array<string> 返回 Array<string> 类型的可枚举属性的名称列表
      let obj = {
        name: "zhangsan",
        age: 11
      }

      let ret1 = UTSJSONObject.keys(obj).length
      console.log(ret1) //2

兼容性

Web uni-app x Android uni-app x iOS uni-app x Android uni-app iOS uni-app Web uni-app
4.25 4.18 4.23 x 4.23 x

UTS 插件兼容性

Android uni-app x UTS 插件 Android uni-app UTS 插件 iOS uni-app x UTS 插件 iOS uni-app UTS 插件 Harmony uni-app x UTS 插件 Harmony uni-app UTS 插件
4.18 4.18 - - - -

# assign(...items): UTSJSONObject

该方法允许输入一个或者多个UTSJSONObject对象,合并后返回一个新的UTSJSONObject,其中包含全部输入对象的属性字段,如果存在同名的属性会以后传入的属性为准

参数

名称 类型 必填 默认值 兼容性 描述
items UTSJSONObject[] - - 需要被合并的UTSJSONObject 实例对象

返回值

类型 描述
UTSJSONObject 合并后的UTSJSONObject
      let target = { a: 1, b: 2 };
      let source = { b: 4, c: 5 };
      // 得到一个UTSJSONObject对象
      let returnedTarget = UTSJSONObject.assign(target, source);

兼容性

Web uni-app x Android uni-app x iOS uni-app x Android uni-app iOS uni-app Web uni-app
4.25 4.18 4.23 x 4.23 x

UTS 插件兼容性

Android uni-app x UTS 插件 Android uni-app UTS 插件 iOS uni-app x UTS 插件 iOS uni-app UTS 插件 Harmony uni-app x UTS 插件 Harmony uni-app UTS 插件
4.18 4.18 - - - -

注意: 与js中的Object.assign不同, 这里每次返回的都是一个新的对象

# assign<T>(...items: T[]): T

该方法允许输入一个或者多个UTSJSONObject对象,合并后返回一个新的泛型对象T,其中包含全部输入对象的属性字段,如果存在同名的属性会以后传入的属性为准

参数

名称 类型 必填 默认值 兼容性 描述
items any[] - - 需要被合并的实例对象

返回值

类型 描述
T 合并后的泛型对象
      let target1 = { a: 1, b: 2 };
      let source1 = { b: 4, c: 5 };
      // 得到一个UTSJSONObject对象
      let returned= UTSJSONObject.assign<UTSJSONObject>(target1, source1);
      console.log(returned)

兼容性

Web uni-app x Android uni-app x iOS uni-app x Android uni-app iOS uni-app Web uni-app
4.25 4.18 4.23 x 4.23 x

UTS 插件兼容性

Android uni-app x UTS 插件 Android uni-app UTS 插件 iOS uni-app x UTS 插件 iOS uni-app UTS 插件 Harmony uni-app x UTS 插件 Harmony uni-app UTS 插件
4.18 4.18 - - - -

注意: 与js中的Object.assign不同, 这里每次返回的都是一个新的对象

# 实例方法

# parse()

将当前的UTSJSONObject对象转换为某一个具体的类型 T

返回值

类型 描述
T|null 具体的类型T,如果失败返回null

兼容性

Web uni-app x Android uni-app x iOS uni-app x Android uni-app iOS uni-app Web uni-app
x 3.90 x x x x

UTS 插件兼容性

Android uni-app x UTS 插件 Android uni-app UTS 插件 iOS uni-app x UTS 插件 iOS uni-app UTS 插件 Harmony uni-app x UTS 插件 Harmony uni-app UTS 插件
3.90 3.90 - - - -

# get(key: string): any | null

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

参数

名称 类型 必填 默认值 兼容性 描述
key string - - -

返回值

类型 描述
any|null 如果属性存在返回结果,不存在返回null
      const person : UTSJSONObject = {
        name: 'Tom',
        printName: () => {
          // ...
        }
      }
      //返回指定键对应的值,如果对象中不存在此键则返回 null。
      let name : string = person["name"] as String
      //get 方法可以简化为使用下标运算符 `[]` 访问
      name = person['name'] as string
      //增加或更新指定键对应的值。
      person.set('name', 'Tom1')
      //set 方法可以简化为使用下标运算符 `[]` 赋值
      person['name'] = 'Tom2'

兼容性

Web uni-app x Android uni-app x iOS uni-app x Android uni-app iOS uni-app Web uni-app
4.0 3.90 4.11 x x

UTS 插件兼容性

Android uni-app x UTS 插件 Android uni-app UTS 插件 iOS uni-app x UTS 插件 iOS uni-app UTS 插件 Harmony uni-app x UTS 插件 Harmony uni-app UTS 插件
3.90 3.90 - - - -

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

添加或更新一个指定的属性

参数

名称 类型 必填 默认值 兼容性 描述
key string - - -
value any - - -

返回值

类型
void
      const person : UTSJSONObject = {
        name: 'Tom',
        printName: () => {
          // ...
        }
      }
      //返回指定键对应的值,如果对象中不存在此键则返回 null。
      let name : string = person["name"] as String
      //get 方法可以简化为使用下标运算符 `[]` 访问
      name = person['name'] as string
      //增加或更新指定键对应的值。
      person.set('name', 'Tom1')
      //set 方法可以简化为使用下标运算符 `[]` 赋值
      person['name'] = 'Tom2'

兼容性

Web uni-app x Android uni-app x iOS uni-app x Android uni-app iOS uni-app Web uni-app
4.0 3.90 4.11 x x

UTS 插件兼容性

Android uni-app x UTS 插件 Android uni-app UTS 插件 iOS uni-app x UTS 插件 iOS uni-app UTS 插件 Harmony uni-app x UTS 插件 Harmony uni-app UTS 插件
3.90 3.90 - - - -

# getAny(key): any | null

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

参数

名称 类型 必填 默认值 兼容性 描述
key string - - -

返回值

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

兼容性

Web uni-app x Android uni-app x iOS uni-app x Android uni-app iOS uni-app Web uni-app
4.0 3.90 4.11 x x

UTS 插件兼容性

Android uni-app x UTS 插件 Android uni-app UTS 插件 iOS uni-app x UTS 插件 iOS uni-app UTS 插件 Harmony uni-app x UTS 插件 Harmony uni-app UTS 插件
3.90 3.90 - - - -

# getAny(key, def): any

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

参数

名称 类型 必填 默认值 兼容性 描述
key string - - 属性值, 可以是keyPath
def any - - 指定的默认值

返回值

类型 描述
any 如果属性存在返回结果,不存在返回指定的默认值

兼容性

Web uni-app x Android uni-app x iOS uni-app x Android uni-app iOS uni-app Web uni-app
4.0 3.90 4.11 x x

UTS 插件兼容性

Android uni-app x UTS 插件 Android uni-app UTS 插件 iOS uni-app x UTS 插件 iOS uni-app UTS 插件 Harmony uni-app x UTS 插件 Harmony uni-app UTS 插件
3.90 3.90 - - - -

# getBoolean(key): boolean | null

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

参数

名称 类型 必填 默认值 兼容性 描述
key string - - -

返回值

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

兼容性

Web uni-app x Android uni-app x iOS uni-app x Android uni-app iOS uni-app Web uni-app
4.0 3.90 4.11 x x

UTS 插件兼容性

Android uni-app x UTS 插件 Android uni-app UTS 插件 iOS uni-app x UTS 插件 iOS uni-app UTS 插件 Harmony uni-app x UTS 插件 Harmony uni-app UTS 插件
3.90 3.90 - - - -

# getBoolean(key, def): boolean

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

参数

名称 类型 必填 默认值 兼容性 描述
key string - - 属性值, 可以是keyPath
def boolean - - 指定的默认值

返回值

类型 描述
boolean 如果属性名存在,且类型为Boolean返回对应的结果,不存在返回指定的默认值

兼容性

Web uni-app x Android uni-app x iOS uni-app x Android uni-app iOS uni-app Web uni-app
4.0 3.90 4.11 x x

UTS 插件兼容性

Android uni-app x UTS 插件 Android uni-app UTS 插件 iOS uni-app x UTS 插件 iOS uni-app UTS 插件 Harmony uni-app x UTS 插件 Harmony uni-app UTS 插件
3.90 3.90 - - - -

# getNumber(key): number | null

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

参数

名称 类型 必填 默认值 兼容性 描述
key string - - -

返回值

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

兼容性

Web uni-app x Android uni-app x iOS uni-app x Android uni-app iOS uni-app Web uni-app
4.0 3.90 4.11 x x

UTS 插件兼容性

Android uni-app x UTS 插件 Android uni-app UTS 插件 iOS uni-app x UTS 插件 iOS uni-app UTS 插件 Harmony uni-app x UTS 插件 Harmony uni-app UTS 插件
3.90 3.90 - - - -

# getNumber(key, def): number

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

参数

名称 类型 必填 默认值 兼容性 描述
key string - - 属性值, 可以是keyPath
def number - - 指定的默认值

返回值

类型 描述
number 如果属性名存在,且类型为number返回对应的结果,不存在返回指定的默认值

兼容性

Web uni-app x Android uni-app x iOS uni-app x Android uni-app iOS uni-app Web uni-app
4.0 3.90 4.11 x x

UTS 插件兼容性

Android uni-app x UTS 插件 Android uni-app UTS 插件 iOS uni-app x UTS 插件 iOS uni-app UTS 插件 Harmony uni-app x UTS 插件 Harmony uni-app UTS 插件
3.90 3.90 - - - -

# getString(key): string | null

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

参数

名称 类型 必填 默认值 兼容性 描述
key string - - -

返回值

类型 描述
string|null 如果属性名存在,且类型为string返回对应的结果,不存在返回null
      const utsObj : UTSJSONObject = {} as any as UTSJSONObject
      for (let i = 0; i < 100; i++) {
        utsObj.set('' + i, '' + i)
      }

      console.log('--start--')
      let startTime = Date.now()
      for (let i = 0; i < 10000; i++) {
        utsObj.getString('0')
      }

兼容性

Web uni-app x Android uni-app x iOS uni-app x Android uni-app iOS uni-app Web uni-app
4.0 3.90 4.11 x x

UTS 插件兼容性

Android uni-app x UTS 插件 Android uni-app UTS 插件 iOS uni-app x UTS 插件 iOS uni-app UTS 插件 Harmony uni-app x UTS 插件 Harmony uni-app UTS 插件
3.90 3.90 - - - -

# getString(key, def): string

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

参数

名称 类型 必填 默认值 兼容性 描述
key string - - 属性值, 可以是keyPath
def string - - 指定的默认值

返回值

类型 描述
string 如果属性名存在,且类型为string返回对应的结果,不存在返回指定的默认值

兼容性

Web uni-app x Android uni-app x iOS uni-app x Android uni-app iOS uni-app Web uni-app
4.0 3.90 4.11 x x

UTS 插件兼容性

Android uni-app x UTS 插件 Android uni-app UTS 插件 iOS uni-app x UTS 插件 iOS uni-app UTS 插件 Harmony uni-app x UTS 插件 Harmony uni-app UTS 插件
3.90 3.90 - - - -

# getJSON(key): UTSJSONObject | null

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

参数

名称 类型 必填 默认值 兼容性 描述
key string - - -

返回值

类型 描述
UTSJSONObject|null 如果属性名存在,且类型为UTSJSONObject返回对应的结果,不存在返回null
      let obj = {
        "cars": [
          {
            name: "car1",
            value: 100
          }
        ]
      }

      let cars = obj.getArray<UTSJSONObject>("cars")
      cars![0].set("value", 20)
      let firstCar = obj.getJSON("cars[0]")
      console.log(firstCar!['value'])//20

兼容性

Web uni-app x Android uni-app x iOS uni-app x Android uni-app iOS uni-app Web uni-app
4.0 3.90 4.11 x x

UTS 插件兼容性

Android uni-app x UTS 插件 Android uni-app UTS 插件 iOS uni-app x UTS 插件 iOS uni-app UTS 插件 Harmony uni-app x UTS 插件 Harmony uni-app UTS 插件
3.90 3.90 - - - -

# getJSON(key, def): UTSJSONObject

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

参数

名称 类型 必填 默认值 兼容性 描述
key string - - 属性值, 可以是keyPath
def UTSJSONObject - - 指定的默认值

返回值

类型 描述
UTSJSONObject 如果属性名存在,且类型为UTSJSONObject返回对应的结果,不存在返回指定的默认值

兼容性

Web uni-app x Android uni-app x iOS uni-app x Android uni-app iOS uni-app Web uni-app
4.0 3.90 4.11 x x

UTS 插件兼容性

Android uni-app x UTS 插件 Android uni-app UTS 插件 iOS uni-app x UTS 插件 iOS uni-app UTS 插件 Harmony uni-app x UTS 插件 Harmony uni-app UTS 插件
3.90 3.90 - - - -

# getArray(key): Array<T> | null

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

参数

名称 类型 必填 默认值 兼容性 描述
key string - - -

返回值

类型 描述
Array<T>|null 如果属性名存在,且类型为Array返回对应的结果,不存在返回null
      let obj = {
        "cars": [
          {
            name: "car1",
            value: 100
          }
        ]
      }

      let cars = obj.getArray<UTSJSONObject>("cars")
      cars![0].set("value", 20)
      let firstCar = obj.getJSON("cars[0]")
      console.log(firstCar!['value'])//20

兼容性

Web uni-app x Android uni-app x iOS uni-app x Android uni-app iOS uni-app Web uni-app
4.0 3.90 4.11 x x

UTS 插件兼容性

Android uni-app x UTS 插件 Android uni-app UTS 插件 iOS uni-app x UTS 插件 iOS uni-app UTS 插件 Harmony uni-app x UTS 插件 Harmony uni-app UTS 插件
3.90 3.90 - - - -

# getArray(key, def: Array<T>): Array<T>

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

参数

名称 类型 必填 默认值 兼容性 描述
key string - - 属性值, 可以是keyPath
def Array<T><T> - - 指定的默认值

返回值

类型 描述
Array<T> 如果属性名存在,且类型为Array返回对应的结果,不存在返回指定的默认值
      //这个方法用来获取指定元素类型的数组
      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)

兼容性

Web uni-app x Android uni-app x iOS uni-app x Android uni-app iOS uni-app Web uni-app
4.0 3.90 4.11 x x

UTS 插件兼容性

Android uni-app x UTS 插件 Android uni-app UTS 插件 iOS uni-app x UTS 插件 iOS uni-app UTS 插件 Harmony uni-app x UTS 插件 Harmony uni-app UTS 插件
3.90 3.90 - - - -

# getArray(key): Array<any> | null

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

参数

名称 类型 必填 默认值 兼容性 描述
key string - - -

返回值

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

兼容性

Web uni-app x Android uni-app x iOS uni-app x Android uni-app iOS uni-app Web uni-app
4.0 3.90 4.11 x x

UTS 插件兼容性

Android uni-app x UTS 插件 Android uni-app UTS 插件 iOS uni-app x UTS 插件 iOS uni-app UTS 插件 Harmony uni-app x UTS 插件 Harmony uni-app UTS 插件
3.90 3.90 - - - -

# getArray(key, def: Array<any>): Array<any>

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

参数

名称 类型 必填 默认值 兼容性 描述
key string - - 属性值, 可以是keyPath
def Array<any><any> - - 指定的默认值

返回值

类型 描述
Array<any> 如果属性名存在,且类型为Array返回对应的结果,不存在返回指定的默认值

兼容性

Web uni-app x Android uni-app x iOS uni-app x Android uni-app iOS uni-app Web uni-app
4.0 3.90 x x x x

UTS 插件兼容性

Android uni-app x UTS 插件 Android uni-app UTS 插件 iOS uni-app x UTS 插件 iOS uni-app UTS 插件 Harmony uni-app x UTS 插件 Harmony uni-app UTS 插件
3.90 3.90 - - - -

# toMap(): Map<string, any>

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

返回值

类型 描述
Map<string, any> 返回 Map<string, any> 类型的 map
      person1 = JSON.parseObject('{"name":"Tom"}')!
      person1.toMap().forEach((value, key) => {
        console.log(key)
        console.log(value)
      })

兼容性

Web uni-app x Android uni-app x iOS uni-app x Android uni-app iOS uni-app Web uni-app
4.0 3.90 4.11 x x

UTS 插件兼容性

Android uni-app x UTS 插件 Android uni-app UTS 插件 iOS uni-app x UTS 插件 iOS uni-app UTS 插件 Harmony uni-app x UTS 插件 Harmony uni-app UTS 插件
3.90 3.90 - - - -

# 参见

相关 Bug

# 常见问题

# 目标语言为js时UTSJSONObject实例方法可以被覆盖

如非必要请勿利用此特性

如下代码会将getString覆盖为1

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

# UTSJSONObject 与 type 相互转换

可以使用下面的代码,进行 UTSJSONObjecttype 转换

      type User = {
        name : string,
        age : number
      }
      let jsonObj = {
        name: "张三",
        age: 12
      }
      // UTSJSONObject => 自定义type
      let userA = JSON.parse<User>(JSON.stringify(jsonObj)!)
      console.log(userA!.name)
      // 自定义type => UTSJSONObject
      let utsJsonA = JSON.parseObject(JSON.stringify(userA)!)
      console.log(utsJsonA)

# Android 平台方法

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

UTS

Kotlin

// 创建一个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)