json - 如何在 Typescript 中保持代码 DRY 的同时解析多个 Json 文件?
问题描述
我的应用程序正在读取 Typescript 中的多个 Json 文件填充选择框,但我想避免潮湿(将所有内容写两次)代码并保持干燥(不要重复自己)。我最初对每个 json 文件都有唯一的函数,因为它们每个都有不同的值并且需要以不同的方式解析,但我改为创建一个可以从我的主类调用的函数,该函数将读取并解析为数组和返回。
例如,我的国家 Json 如下所示:
{
"Countries": {
"country": [
{
"_CountrySEQ": "0",
"_CountryCodeDesc": "UNITED STATES",
"_CountryCode": "USA"
},
{
"_CountrySEQ": "1",
"_CountryCodeDesc": "CANADA",
"_CountryCode": "CAN"
},
, , ,
}
}
我需要将其解析为键/值数组,如下所示:
[
{
key:'USA',
value:'UNITED STATES'
},
{
key:'CAN',
value:'CANADA'
}
. . .
]
但我有一个看起来像这样的 statesjson:
{
"States": {
"state": [
{
"_State": "(cantons) Aargau",
"_CountryCode": "CHE"
},
{
"_State": "Abruzzi",
"_CountryCode": "ITA"
}
. . .
]
}
}
并且需要解析出来看起来像这样:
[
{
key:'CHE',
value:'(cantons) Aargau'
},
{
key:'ITA',
value:'Abruzzi'
}
. . .
]
有没有办法尽可能做到模块化?像一个函数来处理这个?类或接口数组是最佳解决方案吗?如果是这样,我该如何正确实施它们?
解决方案
此函数处理两个数据集。
const parser = (dataset) => {
const [first, second, index1, index2] =
dataset.Countries ?
["Countries", "country", 2, 1] : ["States", "state", 0, 1];
return dataset[first][second].map(item => {
return {
key1: Object.values(item)[index1],
key2: Object.values(item)[index2],
}
});
};
parser(Countries);
parser(States);
推荐阅读
- python - Python SMTP - 将电子邮件发送给用户后在已发送项目中接收电子邮件
- javascript - 尝试将数组中的任何图像插入到对象中
- c - 在c编程中生成随机数的算术级数
- xml - XSL:使用 tokenize 生成 .dot digraph 连接列表?
- c# - Epplus - LoadFromCollection 和列顺序
- c# - ASP.NET Core 2.1 从类库中引用 ApplicationDbContext
- android - macOS 上的 Android 模拟器文件结构在哪里?
- visual-studio-code - VSCode 颜色主题函数调用
- android - 在 PDA 上执行的颤振应用程序有问题吗?
- javascript - 单击 OpenMCT 的“绘图视图”出现错误