1# @ohos.data.uniformDataStruct (标准化数据结构) 2<!--Kit: ArkData--> 3<!--Subsystem: DistributedDataManager--> 4<!--Owner: @jcwen--> 5<!--Designer: @junathuawei1; @zph000--> 6<!--Tester: @lj_liujing; @yippo; @logic42--> 7<!--Adviser: @ge-yafang--> 8 9本模块为统一数据管理框架(Unified Data Management Framework,UDMF)的组成部分,针对多对多跨应用数据共享的不同业务场景提供了部分标准化数据类型[UniformDataType](js-apis-data-uniformTypeDescriptor.md#uniformdatatype)对应的数据结构,方便不同应用间进行数据交互,减少数据类型适配的工作量。 10 11> **说明:** 12> 13> 本模块首批接口从API version 12开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 14 15## 导入模块 16 17```js 18import { uniformDataStruct } from '@kit.ArkData'; 19``` 20 21## PlainText 22 23纯文本类型数据,用于描述纯文本类型数据。 24 25**系统能力**:SystemCapability.DistributedDataManager.UDMF.Core 26 27| 名称 | 类型 | 只读 | 可选 | 说明 | 28| ----------- | ------ | ---- | ---- |-----------------------| 29| uniformDataType | 'general.plain-text'| 是 | 否 | 统一数据类型标识,标识为纯文本类型数据,固定为“general.plain-text”,数据类型描述信息见[UniformDataType](js-apis-data-uniformTypeDescriptor.md#uniformdatatype)。 | 30| textContent | string | 否 | 否 | 纯文本内容。 | 31| abstract | string | 否 | 是 | 纯文本摘要,非必填字段,默认值为空字符串。 | 32| details | Record<string, string> | 否 | 是 | 是一个字典类型对象,key和value都是string类型,用于描述文本内容详细属性。例如,可生成一个details内容为<br />{<br />"title":"标题",<br />"content":"内容"<br />}<br />的数据对象,用于描述一篇文章的详细属性。非必填字段,默认值为空字典对象。 | 33 34**示例:** 35 36```ts 37import { unifiedDataChannel, uniformTypeDescriptor } from '@kit.ArkData'; 38let plainTextDetails : Record<string, string> = { 39 'attr1': 'value1', 40 'attr2': 'value2' 41} 42let plainText : uniformDataStruct.PlainText = { 43 uniformDataType: 'general.plain-text', 44 textContent : 'This is plainText textContent example', 45 abstract : 'this is abstract', 46 details : plainTextDetails 47} 48console.info('plainText.uniformDataType: ' + plainText.uniformDataType); 49if(plainText.details != undefined){ 50 let plainTextDetailsObj : Record<string, string> = plainText.details; 51 for(let kv of Object.entries(plainTextDetailsObj)) { 52 console.info('plainText.details.attr: ' + kv[0] + ', value:' + kv[1]); 53 } 54} 55let record = new unifiedDataChannel.UnifiedRecord(uniformTypeDescriptor.UniformDataType.PLAIN_TEXT, plainText); 56``` 57 58## Hyperlink 59 60超链接类型数据,用于描述超链接类型数据。 61 62**系统能力**:SystemCapability.DistributedDataManager.UDMF.Core 63 64| 名称 | 类型 | 只读 | 可选 | 说明 | 65| ----------- | ------ | ---- | ---- |--------------| 66| uniformDataType | 'general.hyperlink'| 是 | 否 | 统一数据类型标识为超链接类型数据,固定为“general.hyperlink”,数据类型描述信息见[UniformDataType](js-apis-data-uniformTypeDescriptor.md#uniformdatatype)。 67| url | string | 否 | 否 | 链接url。 | 68| description | string | 否 | 是 | 链接内容描述,非必填字段,默认值为空字符串。 | 69| details | Record<string, string> | 否 | 是 | 是一个字典类型对象,key和value都是string类型,用于描述Hyperlink的详细属性内容。例如,可生成一个details内容为<br />{<br />"title":"标题",<br />"content":"内容"<br />}<br />的数据对象。非必填字段,默认值为空字典对象。 | 70 71**示例:** 72 73```ts 74import { unifiedDataChannel, uniformTypeDescriptor } from '@kit.ArkData'; 75let hyperlinkDetails : Record<string, string> = { 76 'attr1': 'value1', 77 'attr2': 'value2' 78} 79let hyperlink : uniformDataStruct.Hyperlink = { 80 uniformDataType:'general.hyperlink', 81 url : 'www.XXX.com', 82 description : 'This is the description of this hyperlink', 83 details : hyperlinkDetails 84} 85console.info('hyperlink.uniformDataType: ' + hyperlink.uniformDataType); 86let record = new unifiedDataChannel.UnifiedRecord(uniformTypeDescriptor.UniformDataType.HYPERLINK, hyperlink); 87``` 88 89## HTML 90 91HTML类型数据,用于描述超文本标记语言数据。 92 93**系统能力**:SystemCapability.DistributedDataManager.UDMF.Core 94 95| 名称 | 类型 | 只读 | 可选 | 说明 | 96| ------------ | ------ | ---- | ---- |-----------------------| 97| uniformDataType | 'general.html'| 是 | 否 | 统一数据类型标识为html类型数据,固定为“general.html”,数据类型描述信息见[UniformDataType](js-apis-data-uniformTypeDescriptor.md#uniformdatatype)。 98| htmlContent | string | 否 | 否 | html格式内容。 | 99| plainContent | string | 否 | 是 | 去除html标签后的纯文本内容,非必填字段,默认值为空字符串。 | 100| details | Record<string, string> | 否 | 是 | 是一个字典类型对象,key和value都是string类型,用于描述HTML的详细属性内容。例如,可生成一个details内容为<br />{<br />"title":"标题",<br />"content":"内容"<br />}<br />的数据对象。非必填字段,默认值为空字典对象。 | 101 102**示例:** 103 104```ts 105import { unifiedDataChannel, uniformTypeDescriptor } from '@kit.ArkData'; 106let htmlObjDetails : Record<string, string> = { 107 'attr1': 'value1', 108 'attr2': 'value2' 109} 110let htmlObj : uniformDataStruct.HTML = { 111 uniformDataType :'general.html', 112 htmlContent : '<div><p>标题</p></div>', 113 plainContent : 'this is plainContent', 114 details : htmlObjDetails 115} 116console.info('htmlObj.uniformDataType: ' + htmlObj.uniformDataType); 117let record = new unifiedDataChannel.UnifiedRecord(uniformTypeDescriptor.UniformDataType.HTML, htmlObj); 118``` 119 120## OpenHarmonyAppItem 121 122系统定义的桌面图标类型数据。 123 124**系统能力**:SystemCapability.DistributedDataManager.UDMF.Core 125 126| 名称 | 类型 | 只读 | 可选 | 说明 | 127| ----------- | ------ | ---- | ---- |-----------------| 128| uniformDataType | 'openharmony.app-item'| 是 | 否 | 统一数据类型标识为桌面图标类型数据,固定为“openharmony.app-item”,数据类型描述信息见[UniformDataType](js-apis-data-uniformTypeDescriptor.md#uniformdatatype)。 129| appId | string | 否 | 否 | 图标对应的应用id。 | 130| appName | string | 否 | 否 | 图标对应的应用名。 | 131| appIconId | string | 否 | 否 | 图标的图片id。 | 132| appLabelId | string | 否 | 否 | 图标名称对应的标签id。 | 133| bundleName | string | 否 | 否 | 图标对应的应用bundle名。 | 134| abilityName | string | 否 | 否 | 图标对应的应用ability名。 | 135| details | Record<string, number \| string \| Uint8Array> | 否 | 是 | 是一个字典类型对象,key是string类型,value可以写入number(数值类型)、string(字符串类型)、Uint8Array(二进制字节数组)类型数据。非必填字段,默认值为空字典对象。| 136 137 138**示例:** 139 140```ts 141import { unifiedDataChannel, uniformTypeDescriptor } from '@kit.ArkData'; 142let u8Array = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); 143let appItemDetails : Record<string, number | string | Uint8Array> = { 144 'appItemKey1': 123, 145 'appItemKey2': 'appItemValue', 146 'appItemKey3': u8Array 147} 148let appItem : uniformDataStruct.OpenHarmonyAppItem = { 149 uniformDataType:'openharmony.app-item', 150 appId : 'MyAppId', 151 appName : 'MyAppName', 152 appIconId : 'MyAppIconId', 153 appLabelId : 'MyAppLabelId', 154 bundleName : 'MyBundleName', 155 abilityName : 'MyAbilityName', 156 details : appItemDetails 157} 158console.info('appItem.uniformDataType: ' + appItem.uniformDataType); 159let record = new unifiedDataChannel.UnifiedRecord(uniformTypeDescriptor.UniformDataType.OPENHARMONY_APP_ITEM, appItem); 160``` 161 162## ContentForm<sup>14+</sup> 163 164内容卡片类型数据。 165 166**系统能力**:SystemCapability.DistributedDataManager.UDMF.Core 167 168| 名称 | 类型 | 只读 | 可选 | 说明 | 169|------------| ------ | ---- |----|--------------------------------------------------------------------------------------------------------------------------------| 170| uniformDataType | 'general.content-form'| 是 | 否 | 统一数据类型标识为内容卡片类型数据,固定为“general.content-form”。 171| title | string | 否 | 否 | 内容卡片的标题。| 172| thumbData | Uint8Array | 否 | 是 | 内容卡片对应的图片数据。| 173| description| string | 否 | 是 | 内容卡片中的描述信息。| 174| appIcon | Uint8Array | 否 | 是 | 内容卡片中的应用图标数据。| 175| appName | string | 否 | 是 | 内容卡片中应用的应用名。| 176| linkUri | string | 否 | 是 | 内容卡片对应的跳转超链接。| 177 178 179**示例:** 180 181```ts 182import { unifiedDataChannel, uniformTypeDescriptor } from '@kit.ArkData'; 183let thumbDataU8Array = new Uint8Array([1, 2, 3, 4, 5]); 184let appIconU8Array = new Uint8Array([6, 7, 8, 9, 10]); 185let contentForm : uniformDataStruct.ContentForm = { 186 uniformDataType : 'general.content-form', 187 title : 'MyTitle', 188 thumbData : thumbDataU8Array, 189 description : 'MyDescription', 190 appName : 'MyAppName', 191 linkUri : 'MyLinkUri', 192 appIcon : appIconU8Array 193} 194console.info('contentForm.uniformDataType: ' + contentForm.uniformDataType); 195let record = new unifiedDataChannel.UnifiedRecord(uniformTypeDescriptor.UniformDataType.CONTENT_FORM, contentForm); 196``` 197 198## Form<sup>15+</sup> 199 200系统定义的卡片类型数据。 201 202**系统能力**:SystemCapability.DistributedDataManager.UDMF.Core 203 204| 名称 | 类型 | 只读 | 可选 | 说明 | 205|------------| ------ | ---- |----|--------------------------------------------------------------------------------------------------------------------------------| 206| uniformDataType | 'openharmony.form'| 是 | 否 | 统一数据类型标识为卡片类型数据,固定为“openharmony.form”,数据类型描述信息见[UniformDataType](js-apis-data-uniformTypeDescriptor.md#uniformdatatype)。 207| formId | number | 否 | 否 | 卡片id。| 208| formName | string | 否 | 否 | 卡片名。| 209| bundleName | string | 否 | 否 | 卡片所属的bundle名。| 210| abilityName| string | 否 | 否 | 卡片对应的ability名。| 211| module | string | 否 | 否 | 卡片所属的module名。| 212| details | Record<string, number \| string \| Uint8Array> | 否 | 是 | 是一个字典类型对象,key是string类型,value可以写入number(数值类型)、string(字符串类型)、Uint8Array(二进制字节数组)类型数据。非必填字段,默认值为空字典对象。| 213 214 215**示例:** 216 217```ts 218import { unifiedDataChannel, uniformTypeDescriptor } from '@kit.ArkData'; 219let u8Array = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); 220let formDetails : Record<string, number | string | Uint8Array> = { 221 'formKey1': 123, 222 'formKey2': 'formValue', 223 'formKey3': u8Array 224} 225let form : uniformDataStruct.Form = { 226 uniformDataType : 'openharmony.form', 227 formId : 1, 228 formName : 'formName', 229 bundleName : 'com.xx.app', 230 abilityName : 'abilityName', 231 module : 'module', 232 details : formDetails 233} 234console.info('form.uniformDataType: ' + form.uniformDataType); 235let record = new unifiedDataChannel.UnifiedRecord(uniformTypeDescriptor.UniformDataType.OPENHARMONY_FORM, form); 236``` 237 238## FileUri<sup>15+</sup> 239 240文件地址类型数据。 241 242**系统能力**:SystemCapability.DistributedDataManager.UDMF.Core 243 244| 名称 | 类型 | 只读 | 可选 | 说明 | 245|------------| ------ | ---- |----|--------------------------------------------------------------------------------------------------------------------------------| 246| uniformDataType | 'general.file-uri'| 是 | 否 | 统一数据类型标识为文件地址类型数据,固定为“general.file-uri”,数据类型描述信息见[UniformDataType](js-apis-data-uniformTypeDescriptor.md#uniformdatatype)。 247| oriUri | string | 否 | 否 | 文件路径。| 248| fileType | string | 否 | 否 | 文件类型(必须是UTD类型,详情参考[UTD预置列表](../../database/uniform-data-type-list.md))。fileType最大长度限制为1024个字节。| 249| details | Record<string, number \| string \| Uint8Array> | 否 | 是 | 是一个字典类型对象,key是string类型,value可以写入number(数值类型)、string(字符串类型)、Uint8Array(二进制字节数组)类型数据。非必填字段,默认值为空字典对象。| 250 251 252**示例:** 253 254```ts 255import { unifiedDataChannel, uniformTypeDescriptor } from '@kit.ArkData'; 256let u8Array = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); 257let fileUriDetails : Record<string, number | string | Uint8Array> = { 258 'fileUriKey1': 123, 259 'fileUriKey2': 'fileUriValue', 260 'fileUriKey3': u8Array 261} 262let fileUri : uniformDataStruct.FileUri = { 263 uniformDataType : 'general.file-uri', 264 oriUri : 'www.xx.com', 265 fileType : 'general.image', 266 details : fileUriDetails 267} 268console.info('fileUri.uniformDataType: ' + fileUri.uniformDataType); 269// 当使用FileUri类型的标准化数据结构构造record时,推荐入参中的type值设为uniformTypeDescriptor.UniformDataType.FILE_URI 270let record = new unifiedDataChannel.UnifiedRecord(uniformTypeDescriptor.UniformDataType.FILE_URI, fileUri); 271``` 272 273## PixelMap<sup>15+</sup> 274 275系统定义的像素图类型数据。 276 277**系统能力**:SystemCapability.DistributedDataManager.UDMF.Core 278 279| 名称 | 类型 | 只读 | 可选 | 说明 | 280|------------| ------ | ---- |----|--------------------------------------------------------------------------------------------------------------------------------| 281| uniformDataType | 'openharmony.pixel-map'| 是 | 否 | 统一数据类型标识为像素图类型数据,固定为“openharmony.pixel-map”,数据类型描述信息见[UniformDataType](js-apis-data-uniformTypeDescriptor.md#uniformdatatype)。 282| pixelMap | image.PixelMap | 否 | 否 | 像素图二进制数据。| 283| details | Record<string, number \| string \| Uint8Array> | 否 | 是 | 是一个字典类型对象,key是string类型,value可以写入number(数值类型)、string(字符串类型)、Uint8Array(二进制字节数组)类型数据。非必填字段,默认值为空字典对象。| 284 285 286**示例:** 287 288```ts 289import { unifiedDataChannel, uniformTypeDescriptor } from '@kit.ArkData'; 290import { image } from '@kit.ImageKit'; 291 292let u8Array = new Uint8Array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]); 293let arrayBuffer = new ArrayBuffer(4*200*200); 294let opt : image.InitializationOptions = { editable: true, pixelFormat: 3, size: { height: 200, width: 200 }, alphaType: 3 }; 295let pixelMapDetails : Record<string, number | string | Uint8Array> = { 296 'pixelMapKey1': 123, 297 'pixelMapKey2': 'pixelMapValue', 298 'pixelMapKey3': u8Array 299} 300let pixelMap : uniformDataStruct.PixelMap = { 301 uniformDataType : 'openharmony.pixel-map', 302 pixelMap : image.createPixelMapSync(arrayBuffer, opt), 303 details : pixelMapDetails 304} 305console.info('pixelMap.uniformDataType: ' + pixelMap.uniformDataType); 306let record = new unifiedDataChannel.UnifiedRecord(uniformTypeDescriptor.UniformDataType.OPENHARMONY_PIXEL_MAP, pixelMap); 307```