鸿蒙的json.parse()返回的对象无法获取到键值
这两天一直被ArkTs的json解析困扰,
我在官方文档里,复制一段解析json的代码,放到最新的Deveco中进行编译测试,发现根本不是想要的输出结果。
我复制的代码如下:
let jsonText = ‘{“name”: “John”, “age”: 30, “city”: “ChongQing”}’;
let obj = JSON.parse(jsonText);
console.log((obj as object)?.[“name”])
按照官方的解释是,日志中应该输出John,但是日志输出的是“undefined”。如图所示:
这就意味着,使用JSON.parse转换成的对象,无法通过对象属性直接获得键的值。
也就是说ArkTS无法进行json对象的内容获取,所以要处理基本的Json数据成为了泡影!
我给官方提了个问题单,今天上午有人回复了,官方让我加个object申明,如下:
let obj: object = JSON.parse(jsonText);
但是编译器直接报错,如下图所示。
报错信息如下:
Type ‘Object | null’ is not assignable to type ‘object’.
Type ‘null’ is not assignable to type ‘object’.
意思是对象是不能被赋予null的,所以要做如下非空申明:
let obj: object | null = JSON.parse(jsonText);
这样,编译器就不会报错了,但是日志输出的还是“undefined”。
网上还有说,定义一个json数据类型的接口的方法,我试过,还是返回“undefined”。
所以,我就要崩溃了!
有没有大神和我一样遇到相同问题,麻烦指点迷津!
这个问题不解决,后续的前后端数据交互就完了!