14514f5e3Sopenharmony_ci/*
24514f5e3Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd.
34514f5e3Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
44514f5e3Sopenharmony_ci * you may not use this file except in compliance with the License.
54514f5e3Sopenharmony_ci * You may obtain a copy of the License at
64514f5e3Sopenharmony_ci *
74514f5e3Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
84514f5e3Sopenharmony_ci *
94514f5e3Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
104514f5e3Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
114514f5e3Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
124514f5e3Sopenharmony_ci * See the License for the specific language governing permissions and
134514f5e3Sopenharmony_ci * limitations under the License.
144514f5e3Sopenharmony_ci */
154514f5e3Sopenharmony_ci
164514f5e3Sopenharmony_ci/*
174514f5e3Sopenharmony_ci * @tc.name:sharedJSON
184514f5e3Sopenharmony_ci * @tc.desc:test sharedJSON
194514f5e3Sopenharmony_ci * @tc.type: FUNC
204514f5e3Sopenharmony_ci * @tc.require: issueI9K9KB
214514f5e3Sopenharmony_ci */
224514f5e3Sopenharmony_ci
234514f5e3Sopenharmony_ci// @ts-nocheck
244514f5e3Sopenharmony_cideclare function print(str: any): string;
254514f5e3Sopenharmony_ci
264514f5e3Sopenharmony_ciconst enum BigIntMode {
274514f5e3Sopenharmony_ci    DEFAULT = 0,
284514f5e3Sopenharmony_ci    PARSE_AS_BIGINT = 1,
294514f5e3Sopenharmony_ci    ALWAYS_PARSE_AS_BIGINT = 2,
304514f5e3Sopenharmony_ci};
314514f5e3Sopenharmony_ci
324514f5e3Sopenharmony_ciconst enum ParseReturnType {
334514f5e3Sopenharmony_ci    OBJECT = 0,
344514f5e3Sopenharmony_ci    MAP = 1,
354514f5e3Sopenharmony_ci};
364514f5e3Sopenharmony_ci
374514f5e3Sopenharmony_cilet input = '{"big":1122334455667788999,"small":123,"deci":1234567890.0123456,"shortExp":1.79e+308,"longExp":1.7976931348623157e+308}';
384514f5e3Sopenharmony_cilet input2 = '{"zerodeci1":0.0000123,"zerodeci2":0.4799123,"zerodeci3":0.7777334477383838389929292922,"zerodeci4":0.0000000000000123}';
394514f5e3Sopenharmony_ci
404514f5e3Sopenharmony_cilet obj = {
414514f5e3Sopenharmony_ci    "innerEntry": {
424514f5e3Sopenharmony_ci        "x": 1,
434514f5e3Sopenharmony_ci        "y": "abc",
444514f5e3Sopenharmony_ci        "str": "innerStr",
454514f5e3Sopenharmony_ci    },
464514f5e3Sopenharmony_ci    "arr": [1, 2, 3, 4, 5]
474514f5e3Sopenharmony_ci}
484514f5e3Sopenharmony_ci
494514f5e3Sopenharmony_cilet arr = [1, 3, 5, 7, 9];
504514f5e3Sopenharmony_ci
514514f5e3Sopenharmony_cilet obj1 = {
524514f5e3Sopenharmony_ci    "x": 1,
534514f5e3Sopenharmony_ci    "y": "你好"
544514f5e3Sopenharmony_ci}
554514f5e3Sopenharmony_ci
564514f5e3Sopenharmony_cifunction testJSONParseSendable() {
574514f5e3Sopenharmony_ci    print("Start testJSONParseSendable")
584514f5e3Sopenharmony_ci    let str = JSON.stringify(obj);
594514f5e3Sopenharmony_ci    let sharedObj = JSON.parseSendable(str);
604514f5e3Sopenharmony_ci    print("sharedObj.arr: " + sharedObj.arr);
614514f5e3Sopenharmony_ci    print("sharedObj.innerEntry: " + sharedObj.innerEntry);
624514f5e3Sopenharmony_ci    print("sharedObj.innerEntry.x: " + sharedObj.innerEntry.x);
634514f5e3Sopenharmony_ci    print("sharedObj.innerEntry.y: " + sharedObj.innerEntry.y);
644514f5e3Sopenharmony_ci    print("sharedObj.innerEntry.str: " + sharedObj.innerEntry.str);
654514f5e3Sopenharmony_ci
664514f5e3Sopenharmony_ci    let str1 = JSON.stringify(arr);
674514f5e3Sopenharmony_ci    let sharedArr = JSON.parseSendable(str1);
684514f5e3Sopenharmony_ci    print("sharedArr: " + sharedArr);
694514f5e3Sopenharmony_ci
704514f5e3Sopenharmony_ci    let str2 = JSON.stringify(obj1);
714514f5e3Sopenharmony_ci    let sharedObj1 = JSON.parseSendable(str2);
724514f5e3Sopenharmony_ci    print("sharedObj1.x: " + sharedObj1.x);
734514f5e3Sopenharmony_ci    print("sharedObj1.y: " + sharedObj1.y);
744514f5e3Sopenharmony_ci}
754514f5e3Sopenharmony_ci
764514f5e3Sopenharmony_cifunction jsonRepeatCall() {
774514f5e3Sopenharmony_ci    print("Start jsonRepeatCall")
784514f5e3Sopenharmony_ci    let stringify1 = JSON.stringify(obj);
794514f5e3Sopenharmony_ci    print("stringify1: " + stringify1);
804514f5e3Sopenharmony_ci    let sharedObj = JSON.parseSendable(stringify1);
814514f5e3Sopenharmony_ci    let stringify2 = JSON.stringify(sharedObj);
824514f5e3Sopenharmony_ci    print("stringify2: " + stringify2);
834514f5e3Sopenharmony_ci    let normalObj = JSON.parse(stringify2);
844514f5e3Sopenharmony_ci    let stringify3 = JSON.stringify(normalObj);
854514f5e3Sopenharmony_ci    print("stringify3: " + stringify3);
864514f5e3Sopenharmony_ci
874514f5e3Sopenharmony_ci    let stringify4 = JSON.stringify(arr);
884514f5e3Sopenharmony_ci    print("stringify4: " + stringify4);
894514f5e3Sopenharmony_ci    let sharedArr = JSON.parseSendable(stringify4);
904514f5e3Sopenharmony_ci    let stringify5 = JSON.stringify(sharedArr);
914514f5e3Sopenharmony_ci    print("stringify5: " + stringify5);
924514f5e3Sopenharmony_ci    let normalArr = JSON.parse(stringify5);
934514f5e3Sopenharmony_ci    let stringify6 = JSON.stringify(normalArr);
944514f5e3Sopenharmony_ci    print("stringify6: " + stringify6);
954514f5e3Sopenharmony_ci
964514f5e3Sopenharmony_ci    let stringify7 = JSON.stringify(obj1);
974514f5e3Sopenharmony_ci    print("stringify7: " + stringify7);
984514f5e3Sopenharmony_ci    let sharedObj1 = JSON.parseSendable(stringify7);
994514f5e3Sopenharmony_ci    let stringify8 = JSON.stringify(sharedObj1);
1004514f5e3Sopenharmony_ci    print("stringify8: " + stringify8);
1014514f5e3Sopenharmony_ci    let normalObj1 = JSON.parse(stringify8);
1024514f5e3Sopenharmony_ci    let stringify9 = JSON.stringify(normalObj1);
1034514f5e3Sopenharmony_ci    print("stringify9: " + stringify9);
1044514f5e3Sopenharmony_ci
1054514f5e3Sopenharmony_ci    let strSendable = '{"x":1, "x":2, "x":3, "x":"你好", "a":4, "x":"你好", "a":2}';
1064514f5e3Sopenharmony_ci    let sharedObj2 = JSON.parseSendable(strSendable);
1074514f5e3Sopenharmony_ci    print("sharedObj2.x: " + sharedObj2.x);
1084514f5e3Sopenharmony_ci    print("sharedObj2.a: " + sharedObj2.a);
1094514f5e3Sopenharmony_ci    
1104514f5e3Sopenharmony_ci    let stringify10 = JSON.stringify(sharedObj2);
1114514f5e3Sopenharmony_ci    print("stringify10: " + stringify10);
1124514f5e3Sopenharmony_ci}
1134514f5e3Sopenharmony_ci
1144514f5e3Sopenharmony_cifunction testASONBigInt() {
1154514f5e3Sopenharmony_ci    var options1 = {
1164514f5e3Sopenharmony_ci        bigIntMode: BigIntMode.PARSE_AS_BIGINT,
1174514f5e3Sopenharmony_ci    }
1184514f5e3Sopenharmony_ci    var obj = JSON.parseSendable(input, undefined, options1);
1194514f5e3Sopenharmony_ci
1204514f5e3Sopenharmony_ci    print(obj.small);
1214514f5e3Sopenharmony_ci    print(obj.big);
1224514f5e3Sopenharmony_ci    print((typeof obj.big === "bigint"));
1234514f5e3Sopenharmony_ci
1244514f5e3Sopenharmony_ci    var options2 = {
1254514f5e3Sopenharmony_ci        bigIntMode: BigIntMode.ALWAYS_PARSE_AS_BIGINT,
1264514f5e3Sopenharmony_ci    }
1274514f5e3Sopenharmony_ci    var obj2 = JSON.parseSendable(input, undefined, options2);
1284514f5e3Sopenharmony_ci    print(obj2.small);
1294514f5e3Sopenharmony_ci    print(obj2.big);
1304514f5e3Sopenharmony_ci    print((typeof obj2.small === "bigint"));
1314514f5e3Sopenharmony_ci
1324514f5e3Sopenharmony_ci    var options3 = {
1334514f5e3Sopenharmony_ci        bigIntMode: BigIntMode.PARSE_AS_BIGINT,
1344514f5e3Sopenharmony_ci    }
1354514f5e3Sopenharmony_ci    var obj3 = JSON.parseSendable(input, undefined, options3);
1364514f5e3Sopenharmony_ci    print(obj3.deci);
1374514f5e3Sopenharmony_ci    print(obj3.shortExp);
1384514f5e3Sopenharmony_ci    print(obj3.longExp);
1394514f5e3Sopenharmony_ci
1404514f5e3Sopenharmony_ci    var options4 = {
1414514f5e3Sopenharmony_ci        bigIntMode: BigIntMode.PARSE_AS_BIGINT,
1424514f5e3Sopenharmony_ci    }
1434514f5e3Sopenharmony_ci    var obj4 = JSON.parseSendable(input, undefined, options4);
1444514f5e3Sopenharmony_ci    var output = JSON.stringifySendable(obj4);
1454514f5e3Sopenharmony_ci    print(output);
1464514f5e3Sopenharmony_ci
1474514f5e3Sopenharmony_ci    var options5 = {
1484514f5e3Sopenharmony_ci        bigIntMode: BigIntMode.ALWAYS_PARSE_AS_BIGINT,
1494514f5e3Sopenharmony_ci    }
1504514f5e3Sopenharmony_ci    var obj5 = JSON.parseSendable(input, undefined, options5);
1514514f5e3Sopenharmony_ci    var output2 = JSON.stringifySendable(obj5);
1524514f5e3Sopenharmony_ci    print(output2);
1534514f5e3Sopenharmony_ci}
1544514f5e3Sopenharmony_ci
1554514f5e3Sopenharmony_cifunction testJSONBigInt() {
1564514f5e3Sopenharmony_ci    var options1 = {
1574514f5e3Sopenharmony_ci        bigIntMode: BigIntMode.PARSE_AS_BIGINT,
1584514f5e3Sopenharmony_ci    }
1594514f5e3Sopenharmony_ci    var obj = JSON.parseBigInt(input, undefined, options1);
1604514f5e3Sopenharmony_ci
1614514f5e3Sopenharmony_ci    print(obj.small);
1624514f5e3Sopenharmony_ci    print(obj.big);
1634514f5e3Sopenharmony_ci    print((typeof obj.big === "bigint"));
1644514f5e3Sopenharmony_ci
1654514f5e3Sopenharmony_ci    var options2 = {
1664514f5e3Sopenharmony_ci        bigIntMode: BigIntMode.ALWAYS_PARSE_AS_BIGINT,
1674514f5e3Sopenharmony_ci    }
1684514f5e3Sopenharmony_ci    var obj2 = JSON.parseBigInt(input, undefined, options2);
1694514f5e3Sopenharmony_ci    print(obj2.small);
1704514f5e3Sopenharmony_ci    print(obj2.big);
1714514f5e3Sopenharmony_ci    print((typeof obj2.small === "bigint"));
1724514f5e3Sopenharmony_ci
1734514f5e3Sopenharmony_ci    var options3 = {
1744514f5e3Sopenharmony_ci        bigIntMode: BigIntMode.PARSE_AS_BIGINT,
1754514f5e3Sopenharmony_ci    }
1764514f5e3Sopenharmony_ci    var obj3 = JSON.parseBigInt(input, undefined, options3);
1774514f5e3Sopenharmony_ci    print(obj3.deci);
1784514f5e3Sopenharmony_ci    print(obj3.shortExp);
1794514f5e3Sopenharmony_ci    print(obj3.longExp);
1804514f5e3Sopenharmony_ci
1814514f5e3Sopenharmony_ci    var options4 = {
1824514f5e3Sopenharmony_ci        bigIntMode: BigIntMode.PARSE_AS_BIGINT,
1834514f5e3Sopenharmony_ci    }
1844514f5e3Sopenharmony_ci    var obj4 = JSON.parseBigInt(input, undefined, options4);
1854514f5e3Sopenharmony_ci    var output = JSON.stringifyBigInt(obj4);
1864514f5e3Sopenharmony_ci    print(output);
1874514f5e3Sopenharmony_ci
1884514f5e3Sopenharmony_ci    var options5 = {
1894514f5e3Sopenharmony_ci        bigIntMode: BigIntMode.ALWAYS_PARSE_AS_BIGINT,
1904514f5e3Sopenharmony_ci    }
1914514f5e3Sopenharmony_ci    var obj5 = JSON.parseBigInt(input, undefined, options5);
1924514f5e3Sopenharmony_ci    var output2 = JSON.stringifyBigInt(obj5);
1934514f5e3Sopenharmony_ci    print(output2);
1944514f5e3Sopenharmony_ci
1954514f5e3Sopenharmony_ci}
1964514f5e3Sopenharmony_ci
1974514f5e3Sopenharmony_cifunction testJSONNormal() {
1984514f5e3Sopenharmony_ci    var obj = JSON.parseBigInt(input, undefined, undefined);
1994514f5e3Sopenharmony_ci    print(obj.small);
2004514f5e3Sopenharmony_ci    print(obj.big);
2014514f5e3Sopenharmony_ci    print(obj.deci);
2024514f5e3Sopenharmony_ci    print(obj.shortExp);
2034514f5e3Sopenharmony_ci    print(obj.longExp);
2044514f5e3Sopenharmony_ci    print((typeof obj.small === "number"));
2054514f5e3Sopenharmony_ci    print((typeof obj.big === "number"));
2064514f5e3Sopenharmony_ci    print((typeof obj.deci === "number"));
2074514f5e3Sopenharmony_ci    print((typeof obj.shortExp === "number"));
2084514f5e3Sopenharmony_ci    print((typeof obj.longExp === "number"));
2094514f5e3Sopenharmony_ci}
2104514f5e3Sopenharmony_ci
2114514f5e3Sopenharmony_cifunction testJSONreviver() {
2124514f5e3Sopenharmony_ci    let opt = {
2134514f5e3Sopenharmony_ci        bigIntMode: BigIntMode.ALWAYS_PARSE_AS_BIGINT,
2144514f5e3Sopenharmony_ci    }
2154514f5e3Sopenharmony_ci    try {
2164514f5e3Sopenharmony_ci        JSON.parseSendable(input, function (k, v) {return v;});
2174514f5e3Sopenharmony_ci    } catch (error) {
2184514f5e3Sopenharmony_ci        print(error);
2194514f5e3Sopenharmony_ci    }
2204514f5e3Sopenharmony_ci    try {
2214514f5e3Sopenharmony_ci        JSON.parseSendable(input, function (k, v) {return v;}, opt);
2224514f5e3Sopenharmony_ci    } catch (error) {
2234514f5e3Sopenharmony_ci        print(error);
2244514f5e3Sopenharmony_ci    }
2254514f5e3Sopenharmony_ci}
2264514f5e3Sopenharmony_ci
2274514f5e3Sopenharmony_cifunction testJSONZeroDeci() {
2284514f5e3Sopenharmony_ci    let opt1 = {
2294514f5e3Sopenharmony_ci        bigIntMode: BigIntMode.ALWAYS_PARSE_AS_BIGINT,
2304514f5e3Sopenharmony_ci    }
2314514f5e3Sopenharmony_ci    let opt2 = {
2324514f5e3Sopenharmony_ci        bigIntMode: BigIntMode.PARSE_AS_BIGINT,
2334514f5e3Sopenharmony_ci    }
2344514f5e3Sopenharmony_ci    let obj1 = JSON.parseSendable(input2, undefined, opt1);
2354514f5e3Sopenharmony_ci    print(obj1.zerodeci1);
2364514f5e3Sopenharmony_ci    print(obj1.zerodeci2);
2374514f5e3Sopenharmony_ci    print(obj1.zerodeci3);
2384514f5e3Sopenharmony_ci    print(obj1.zerodeci4);
2394514f5e3Sopenharmony_ci    let obj2 = JSON.parseSendable(input2, undefined, opt2);
2404514f5e3Sopenharmony_ci    print(obj2.zerodeci1);
2414514f5e3Sopenharmony_ci    print(obj2.zerodeci2);
2424514f5e3Sopenharmony_ci    print(obj2.zerodeci3);
2434514f5e3Sopenharmony_ci    print(obj2.zerodeci4);
2444514f5e3Sopenharmony_ci    let obj3 = JSON.parseBigInt(input2, undefined, opt1);
2454514f5e3Sopenharmony_ci    print(obj3.zerodeci1);
2464514f5e3Sopenharmony_ci    print(obj3.zerodeci2);
2474514f5e3Sopenharmony_ci    print(obj3.zerodeci3);
2484514f5e3Sopenharmony_ci    print(obj3.zerodeci4);
2494514f5e3Sopenharmony_ci    let obj4 = JSON.parseBigInt(input2, undefined, opt2);
2504514f5e3Sopenharmony_ci    print(obj4.zerodeci1);
2514514f5e3Sopenharmony_ci    print(obj4.zerodeci2);
2524514f5e3Sopenharmony_ci    print(obj4.zerodeci3);
2534514f5e3Sopenharmony_ci    print(obj4.zerodeci4);
2544514f5e3Sopenharmony_ci}
2554514f5e3Sopenharmony_ci
2564514f5e3Sopenharmony_cifunction testASONMap() {
2574514f5e3Sopenharmony_ci    let jsonText1 = '{"text":"ASON support MAP Test Start","largeNumber":112233445566778899,"people":{"name":"Mary","sex":"1","height":"165"}}';
2584514f5e3Sopenharmony_ci    let options1 = {
2594514f5e3Sopenharmony_ci        bigIntMode: BigIntMode.PARSE_AS_BIGINT,
2604514f5e3Sopenharmony_ci        parseReturnType: ParseReturnType.MAP, 
2614514f5e3Sopenharmony_ci    }
2624514f5e3Sopenharmony_ci    let map = JSON.parseSendable(jsonText1, undefined, options1) as Map<string, object>;
2634514f5e3Sopenharmony_ci
2644514f5e3Sopenharmony_ci    print(map.get("text"));
2654514f5e3Sopenharmony_ci    print(map.get("largeNumber"));
2664514f5e3Sopenharmony_ci    print((typeof map.get("largeNumber") === "bigint"));
2674514f5e3Sopenharmony_ci    print(map.get("people"));
2684514f5e3Sopenharmony_ci
2694514f5e3Sopenharmony_ci    let options2 = {
2704514f5e3Sopenharmony_ci        bigIntMode: BigIntMode.DEFAULT,
2714514f5e3Sopenharmony_ci        parseReturnType: ParseReturnType.MAP, 
2724514f5e3Sopenharmony_ci    }
2734514f5e3Sopenharmony_ci
2744514f5e3Sopenharmony_ci    let jsonText2 = '{';
2754514f5e3Sopenharmony_ci    try {
2764514f5e3Sopenharmony_ci        let map2 = JSON.parseSendable(jsonText2, undefined, options2) as Map<string, object>;
2774514f5e3Sopenharmony_ci    } catch (error) {
2784514f5e3Sopenharmony_ci        print(error);
2794514f5e3Sopenharmony_ci    }
2804514f5e3Sopenharmony_ci
2814514f5e3Sopenharmony_ci    let jsonText3 = '{"city"}';
2824514f5e3Sopenharmony_ci    try {
2834514f5e3Sopenharmony_ci        let map3 = JSON.parseSendable(jsonText3, undefined, options2) as Map<string, object>;
2844514f5e3Sopenharmony_ci    } catch (error) {
2854514f5e3Sopenharmony_ci        print(error);
2864514f5e3Sopenharmony_ci    }
2874514f5e3Sopenharmony_ci
2884514f5e3Sopenharmony_ci    let jsonText4 = '{}';
2894514f5e3Sopenharmony_ci    let map4 = JSON.parseSendable(jsonText4, undefined, options2) as Map<string, object>;
2904514f5e3Sopenharmony_ci    print(map4);
2914514f5e3Sopenharmony_ci
2924514f5e3Sopenharmony_ci    let jsonText5 = '{"x":1, "x":2, "x":3, "x":"你好", "a":4, "x":"你好", "a":2}';
2934514f5e3Sopenharmony_ci    let map5 = JSON.parseSendable(jsonText5, undefined, options2) as Map<string, object>;
2944514f5e3Sopenharmony_ci    print("sendableMap5 size: " + map5.size);
2954514f5e3Sopenharmony_ci    print("sendableMap5 x: " + map5.get("x"));
2964514f5e3Sopenharmony_ci    print("sendableMap5 a: " + map5.get("a"));
2974514f5e3Sopenharmony_ci
2984514f5e3Sopenharmony_ci    let jsonText6 = '{"arr": [1,2,3], "boolA":true, "boolB":false, "nullText":null}';
2994514f5e3Sopenharmony_ci    let map6 = JSON.parseSendable(jsonText6, undefined, options2) as Map<string, object>;
3004514f5e3Sopenharmony_ci    print("sendableMap6 arr: " + map6.get("arr"));
3014514f5e3Sopenharmony_ci    print("sendableMap6 boolA: " + map6.get("boolA"));
3024514f5e3Sopenharmony_ci    print("sendableMap6 boolB: " + map6.get("boolB"));
3034514f5e3Sopenharmony_ci    print("sendableMap6 nullText: " + map6.get("nullText"));
3044514f5e3Sopenharmony_ci}
3054514f5e3Sopenharmony_ci
3064514f5e3Sopenharmony_cifunction testIndexASON()
3074514f5e3Sopenharmony_ci{
3084514f5e3Sopenharmony_ci    let asonstr1 = '{"12":"45", "67":"89"}';
3094514f5e3Sopenharmony_ci    let asonstr2 = '{"12":"45", "67":"89", "a":"b"}';
3104514f5e3Sopenharmony_ci    let a = JSON.parseSendable(asonstr1);
3114514f5e3Sopenharmony_ci    let b = JSON.parseSendable(asonstr2);
3124514f5e3Sopenharmony_ci    print("ASON parse asonstr1: " + a["12"]);
3134514f5e3Sopenharmony_ci    print("ASON parse asonstr2: " + b["67"]);
3144514f5e3Sopenharmony_ci    let asonstr3 =
3154514f5e3Sopenharmony_ci        '{"123":"aa", "xx":"yy", "aaa":"es", "1234":"bb", "aaa":"ee", "124":"123", "success":"true", "123":"1"}';
3164514f5e3Sopenharmony_ci    let c = JSON.parseSendable(asonstr3);
3174514f5e3Sopenharmony_ci    let outstr = c.aaa + c.success + c[123] + c[124];
3184514f5e3Sopenharmony_ci    print("ASON parse asonstr3: " + outstr);
3194514f5e3Sopenharmony_ci    let out3 = JSON.stringifySendable(c)
3204514f5e3Sopenharmony_ci    print(out3);
3214514f5e3Sopenharmony_ci}
3224514f5e3Sopenharmony_ci
3234514f5e3Sopenharmony_cifunction testJSONBigIntZero() {
3244514f5e3Sopenharmony_ci    var opt = {
3254514f5e3Sopenharmony_ci        bigIntMode: BigIntMode.ALWAYS_PARSE_AS_BIGINT,
3264514f5e3Sopenharmony_ci    }
3274514f5e3Sopenharmony_ci    const str = '{"id":0, "bid":999}';
3284514f5e3Sopenharmony_ci    var obj = JSON.parseBigInt(str, undefined, opt);
3294514f5e3Sopenharmony_ci    print(obj.id);
3304514f5e3Sopenharmony_ci}
3314514f5e3Sopenharmony_ci
3324514f5e3Sopenharmony_citestJSONParseSendable();
3334514f5e3Sopenharmony_cijsonRepeatCall();
3344514f5e3Sopenharmony_citestASONBigInt();
3354514f5e3Sopenharmony_citestJSONBigInt();
3364514f5e3Sopenharmony_citestJSONNormal();
3374514f5e3Sopenharmony_citestJSONreviver();
3384514f5e3Sopenharmony_citestJSONZeroDeci();
3394514f5e3Sopenharmony_citestASONMap();
3404514f5e3Sopenharmony_citestIndexASON();
3414514f5e3Sopenharmony_citestJSONBigIntZero();