• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# ASON解析与生成
2
3[ASON工具](../reference/apis-arkts/js-apis-arkts-utils.md#arktsutilsason)与JS提供的JSON工具类似,JSON用于进行JS对象的序列化(stringify)、反序列化(parse)。ASON则提供了[Sendable对象](arkts-sendable.md)的序列化、反序列化能力。使用ASON.stringify方法可将对象转换为字符串,使用ASON.parse方法可将字符串转换为Sendable对象,从而实现对象在并发任务间的高性能引用传递。
4
5ASON.stringify方法还支持将Map和Set对象转换为字符串,可转换的Map和Set类型包括:Map、Set、[collections.Map](../reference/apis-arkts/js-apis-arkts-collections.md#collectionsmap)、[collections.Set](../reference/apis-arkts/js-apis-arkts-collections.md#collectionsset)、[HashMap](../reference/apis-arkts/js-apis-hashmap.md#hashmap)、[HashSet](../reference/apis-arkts/js-apis-hashset.md#hashset)。
6
7> **说明:**
8>
9> ASON.parse默认生成的对象为Sendable对象,布局不可变,不支持增删属性。如果需要支持返回对象的布局可变,可以指定返回类型为MAP,此时会全部返回[collections.Map](../reference/apis-arkts/js-apis-arkts-collections.md#collectionsmap)对象,支持增删属性。
10
11## 使用示例
12
13使用ASON提供的接口,对[Sendable对象](arkts-sendable.md)进行序列化、反序列化。
14
15```ts
16import { ArkTSUtils, collections } from '@kit.ArkTS';
17
18ArkTSUtils.ASON.parse("{}")
19ArkTSUtils.ASON.stringify(new collections.Array(1, 2, 3))
20
21let options2: ArkTSUtils.ASON.ParseOptions = {
22    bigIntMode: ArkTSUtils.ASON.BigIntMode.PARSE_AS_BIGINT,
23    parseReturnType: ArkTSUtils.ASON.ParseReturnType.MAP,
24}
25let jsonText = '{"largeNumber":112233445566778899}';
26let map = ArkTSUtils.ASON.parse(jsonText, undefined, options2);
27ArkTSUtils.ASON.stringify(map);
28```
29