简体中文
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'
// 写法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
}
以数组的形式返回指定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 | - | - | - | - |
该方法允许输入一个或者多个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
不同, 这里每次返回的都是一个新的对象
该方法允许输入一个或者多个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
不同, 这里每次返回的都是一个新的对象
将当前的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 | - | - | - | - |
获取一个 属性,返回类型是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 | - | - | - | - |
添加或更新一个指定的属性
参数
名称 | 类型 | 必填 | 默认值 | 兼容性 | 描述 |
---|---|---|---|---|---|
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 | - | - | - | - |
获取一个 属性,返回类型是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 | - | - | - | - |
获取一个 属性,返回类型是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 | - | - | - | - |
获取一个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 | - | - | - | - |
获取一个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 | - | - | - | - |
获取一个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 | - | - | - | - |
获取一个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 | - | - | - | - |
获取一个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 | - | - | - | - |
获取一个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 | - | - | - | - |
获取一个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 | - | - | - | - |
获取一个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 | - | - | - | - |
获取一个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 | - | - | - | - |
获取一个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 | - | - | - | - |
获取一个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 | - | - | - | - |
获取一个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 | - | - | - | - |
将当前 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 | - | - | - | - |
如非必要请勿利用此特性
如下代码会将getString覆盖为1
const a = {
getString: 1
}
console.log(a.getString) // 1
可以使用下面的代码,进行 UTSJSONObject
和 type
转换
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)
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)