我只是试图做世界上最琐碎的事情,并且遇到一个问题,解析来自各种遗留设备的不一致的大小写数据。
我试图在TypeScript中解析以下JSON
{
"property": 5
}与
{
"Property": 5
}我所能想到的最好的答案就是简单地遍历对象的键并在它们上运行"toUpper“,但是是否有一个不错的NPM包(比如json-typescript-mapper,但不区分大小写),它允许我反序列化一个对象,而不必遍历对象键,手动提取值或编写大量的样板代码。
我希望将JSON解析成一个统一的对象模式,比如{ property },这样我就可以访问它,而无需检查名称的变化情况。
发布于 2018-12-04 21:09:27
一种选择是将自定义reviver函数作为第二个参数写入JSON.parse,该参数将普通对象的键转换为小写:
const json = `{"Property": 5,"inner":{"Foo":"foo"}}`;
const obj = JSON.parse(
json,
(_, val) => {
if (Array.isArray(val) || typeof val !== 'object') {
return val;
}
return Object.entries(val).reduce((a, [key, val]) => {
a[key.toLowerCase()] = val;
return a;
}, {});
}
);
console.log(obj);
https://stackoverflow.com/questions/53621298
复制相似问题