Typsescript: JSON conversion - 将简单的 JSON 转换成更详细的格式

问题描述 投票:0回答:1

我正在使用打字稿文件,我从外部 api 接收 JSON 响应。这里我需要将接收到的 JSON 转换成另一种 JSON 格式。谁能帮忙转换 JSON 格式?

从 API 收到:

type here
Employees: [
    { empid : 12345 },
    { empName: "John Doe" },
    { gender: "Male" },
    { hobbie: "Book" },
    { empid : 12346 },
    { empName: "Jill Doe" },
    { gender: "Female" },
    { hobbie: "Sport" },
    .
    .
    .
]

需要转换成如下:

type here
finalEmployee: [
    {
       empName : "John Doe",
       empDetails: [
        {
          serialNo : 1, 
          empid: 12345,
          gender : "Male",
          hobbie : "Book"
        }
    },
    {
       empName : "Jill Doe",
       empDetails: [
        {
          serialNo : 2,
          empid: 12346,
          gender : "Female",
          hobbie : "Sport"
        }
    },
    .
    .
    .
]

我无法拆分成所需的格式

arrays json typescript
1个回答
0
投票

假设您有一个像这样的简单 JSON 对象:

{
  "name": "John",
  "age": 30,
  "address": "123 Main St"
}

并且您想将其转换为更详细的格式,如下所示:

interface Person {
  name: string;
  age: number;
  address: {
    street: string;
    city: string;
    state: string;
    zip: string;
  };
}

你可以定义一个匹配更详细格式的接口

Person
,然后用它来将简单的JSON对象映射到想要的格式。

这是 TypeScript 中的示例:

interface Person {
  name: string;
  age: number;
  address: {
    street: string;
    city: string;
    state: string;
    zip: string;
  };
}

const simplePerson = {
  name: "John",
  age: 30,
  address: "123 Main St",
};

const detailedPerson: Person = {
  name: simplePerson.name,
  age: simplePerson.age,
  address: {
    street: simplePerson.address,
    city: "",
    state: "",
    zip: "",
  },
};

console.log(detailedPerson); // Output: { name: 'John', age: 30, address: { street: '123 Main St', city: '', state: '', zip: '' } }

在这个例子中,我们定义了

Person
接口更详细的格式。然后我们创建一个
simplePerson
对象来匹配简单的 JSON 对象。

要将

simplePerson
对象转换为
detailedPerson
格式,我们创建一个新对象并将每个属性从
simplePerson
映射到
detailedPerson
中的相应属性。对于 address 属性,我们创建一个新对象,其中 street 属性映射自
simplePerson.address
,其他属性初始化为空字符串。

结果是一个新对象

detailedPerson
匹配
Person
界面更详细的格式

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.