我只是想做世界上最琐碎的事情,并且遇到解析来自各种旧设备的不一致大小写数据的问题。
我正在尝试在TypeScript中解析以下JSON
{
"property": 5
}
vs。
{
"Property": 5
}
我能想到的最好的答案是从字面上遍历对象的键并在它们上运行“ toUpper”,但是那里有一个不错的NPM包(例如json-typescript-mapper但不是区分大小写),这使我可以反序列化对象,而不必循环遍历对象键并手动提取值或编写大量样板代码
我想将JSON解析为一个统一的对象模式,例如{property},这样我就可以访问它而无需花费很多条件来检查名称的变化
答案 0 :(得分:1)
一种选择是编写自定义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);