首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以一种愚蠢的方式反序列化JSON的一种好方法

以一种愚蠢的方式反序列化JSON的一种好方法
EN

Stack Overflow用户
提问于 2018-12-04 20:57:24
回答 1查看 1.2K关注 0票数 1

我只是试图做世界上最琐碎的事情,并且遇到一个问题,解析来自各种遗留设备的不一致的大小写数据。

我试图在TypeScript中解析以下JSON

代码语言:javascript
复制
{
    "property": 5
}

代码语言:javascript
复制
{
   "Property": 5
}

我所能想到的最好的答案就是简单地遍历对象的键并在它们上运行"toUpper“,但是是否有一个不错的NPM包(比如json-typescript-mapper,但不区分大小写),它允许我反序列化一个对象,而不必遍历对象键,手动提取值或编写大量的样板代码。

我希望将JSON解析成一个统一的对象模式,比如{ property },这样我就可以访问它,而无需检查名称的变化情况。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-04 21:09:27

一种选择是将自定义reviver函数作为第二个参数写入JSON.parse,该参数将普通对象的键转换为小写:

代码语言:javascript
复制
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);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53621298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档