如何对JSON.parse 做一个通用的类型检查转换

定义的A类型的b属性为number,但是在JSON.parse + as 之后可以赋值为任何类型,这样对于a:A 的b属性操作就不预计了

interface A { a:number, b:number, c?:string } let a:A={ a:1, b:2, } let d = JSON.parse(’{“a”:1,“b”:“2”,“d”:[“a”,“b”]}’) as A let e = d.b + 1; console.log(“e=”,String(e)) // “21” console.log(JSON.stringify(d))
let h = JSON.parse(’{“a”:1,“b”:“ab”,“d”:[“a”,“b”]}’) as A let i = h.b / 1; console.log(“i=”,String(i)) // NaN console.log(JSON.stringify(h))
// 输出结果 e= “21” {“a”:1,“b”:“2”,“d”:[“a”,“b”]} i= NaN {“a”:1,“b”:“ab”,“d”:[“a”,“b”]}

这样对属性b的操作就无法保证结果了,是否有办法对JSON.parse 做一个通用的类型检查转换。

HarmonyOS
2024-05-10 21:46:40
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
计算机编程小强
json parse 类型处理 可以使用reviver 
class Dead { 
name:string = ‘’ 
age: string = ‘’ 
gender?:string 
} 
 
let god:Dead = new Dead() 
// JSON.parse 是根据给定的字符串json化,然后返回结果的, 与指定的变量类型无关 
god = JSON.parse(’{“name”:“zzzz”,“xiaoming”: {“name”:“XXX”,“age”:18}}’, (key:string,value: string | Number): void| string| Number => { 
// 将"age":18 转化成"age":“18” 
if (key == ‘age’ && typeof value == ‘number’) { 
value = value.toString() 
} 
return value 
}) 
 
console.log(’== ’ + god.age)
分享
微博
QQ
微信
回复
2024-05-11 11:11:59
相关问题
HarmonyOS JSON.parse 返回类型问题
142浏览 • 1回复 待解决
JSON.parse数据处理导致精度丢失问题
125浏览 • 1回复 待解决
如何封装一个通用commonEvent工具类
1763浏览 • 1回复 待解决
HarmonyOS 要做一个可以无限滚动list
364浏览 • 1回复 待解决
HarmonyOS 如何遍历一个JSON Object
257浏览 • 1回复 待解决
如何定义一个未知类型对象
667浏览 • 2回复 待解决
如何一个文件进行读写操作
344浏览 • 1回复 待解决
Map类型怎么转换Json string
2031浏览 • 1回复 待解决
怎么判断一个类型是stirng
674浏览 • 1回复 待解决
判断一个参数是不是Resource类型
311浏览 • 1回复 待解决