大家好我有两个JSON字符串
[{降序:"约翰",编号:" 22",指定:"管理器"}]
另一个JSON字符串
[{名称:"小溪",ID:" 198"作用:"显影剂"}]
所以我需要用第二个JSON文件映射第一个JSON文件
我的输出应该是这样的
[{降序:"小溪",编号:" 198",指定:"显影剂"}]
所以我想在将JSON字符串转换为JAVASCRIPT对象时,我们只需要替换属性..
任何人都可以帮助我 谢谢......
答案 0 :(得分:0)
您有两种不同的类型,我们可以为它们定义打字稿类型。
type FormatOne = {
desc: string;
number: string;
designation: string;
}
type FormatTwo = {
name: string;
ID: string;
role: string;
}
我们可以创建一个函数来从一种类型映射到另一种类型。
const twoToOne = ({name, ID, role}: FormatTwo): FormatOne => ({
desc: name,
number: ID,
designation: role,
})
从字符串解析 JSON 时,您必须使用 as
断言类型,因为 typescript 不知道类型是什么。我们可以说它将是一个混合了两种类型的数组。
const str = '[{desc:"john",number:"22",designation:"manager"}, {name:"creek",ID:"198",role:"developer"}]';
const arr = JSON.parse(str) as Array<FormatOne | FormatTwo>;
如果你知道你有一个包含所有 FormatTwo
的数组,那么重新格式化它就像调用 array.map(twoToOne)
一样简单。
当你有一个混合数组时,我们需要检查每个元素并有条件地调用转换器。我们使用 'name' in item
作为类型保护来查看 item
是否为 FormatTwo
。
const fixed = arr.map( item =>
('name' in item) ? twoToOne(item) : item
);
这个新数组 fixed
的类型为 FormatOne[]
,不需要断言。