鸿蒙的json.parse()返回的对象无法获取到键值

7788lx
发布于 2024-12-9 15:20
浏览
0收藏

这两天一直被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()返回的对象无法获取到键值-鸿蒙开发者社区

这就意味着,使用JSON.parse转换成的对象,无法通过对象属性直接获得键的值。
也就是说ArkTS无法进行json对象的内容获取,所以要处理基本的Json数据成为了泡影!
我给官方提了个问题单,今天上午有人回复了,官方让我加个object申明,如下:
let obj: object = JSON.parse(jsonText);
但是编译器直接报错,如下图所示。
鸿蒙的json.parse()返回的对象无法获取到键值-鸿蒙开发者社区
报错信息如下:
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”。
所以,我就要崩溃了!
有没有大神和我一样遇到相同问题,麻烦指点迷津!
这个问题不解决,后续的前后端数据交互就完了!

收藏
回复
举报
4条回复
按时间正序
/
按时间倒序
wx67693c87d91b7
wx67693c87d91b7

let obj: object = JSON.parse(jsonText) as object

即可

1
回复
2024-12-23 18:34:02
wx584e535db8d07
wx584e535db8d07 回复了 wx67693c87d91b7
let obj: object = JSON.parse(jsonText) as object即可

我也遇到了这样的情况,这样处理还是不行


回复
2024-12-30 16:41:26
wx5b1221fc407ea
wx5b1221fc407ea

我也遇到了,并不行,百思不得其解呀,定义接口也不行,只要是而且不管是parse还是stringfy结果都是空,为毛呀

回复
2025-1-1 10:40:29
wx677e362a8d770
wx677e362a8d770

let p2: object = JSON.parse(JSON.stringify(jsonText)) as object

在parse之前需要格式化一下

回复
2025-1-8 16:25:45
回复
    相关推荐