将 JSON 接口转换为数组

Posted

技术标签:

【中文标题】将 JSON 接口转换为数组【英文标题】:convert JSON interface to array 【发布时间】:2019-05-09 01:52:56 【问题描述】:

我有一个接口类和 JSON 文件,我想将其转换为列表并对其进行处理。例如,从 JSON 中的每个对象获取Racename 到列表\数组中。 可能吗? 这就是界面:

interface IRunners
Racename: string;
Category:number; 
Gender:string; 
Work:string; 
FullName:string; 
Rank:number;
Point:number;
Numparticipant:number;
rankparticipant:number;
precentagePart:string; 
NumRaces:number; 
RaceTime:string; 
rankCat:number; 
PointCat:number; 
RaceDate:string;

这是 JSON 文件 (Runners.json):

[
  "Racename":"A1","Category":34,"Gender":"זכר","Work":"AMDOCS","FullName":"Simon Work ","Rank":1,"Ponit":1,"Numparticipant":0,"rankparticipant":0,"precentagePart":"0","NumRaces":1,"RaceTime":"2018-10-18T00:34:20","rankCat":1,"PointCat":1,"RaceDate":"2018-10-05"
] 

我的订阅方式如下:

  this.runnerService.getRunners().subscribe(
        runners=>
          this.runners = runners;
          this.filteredCompetitions = this.runners;
          this.filteredRunners = this.runners;
        

我想将runners JSON 转换为一个数组,以便进行一些更改并从中获取一些数据。 我是 Typescript 和 Angular 的新手,所以我可能会犯一些错误。

【问题讨论】:

发布样本输出(数组),你想要什么 Typescript JSON string to class的可能重复 @Sachink 在我的帖子开头用一个例子更新了我的问题 您想迭代 IRunners 成员吗?似乎runners json已经是一个列表(Runners.json)。那么,你能更清楚你想要什么吗? @ArthurSilva 正是.. 【参考方案1】:

您可以使用Array#map()。

// Assumes runners.json is a file in the same directory as this file
const jsonArray = require("./runners.json")

// // returns ["A1"]
const listOfRacenames = jsonArray.map(d => d.Racename)

【讨论】:

表示我需要根据您的建议更改界面? 您是否尝试从 JSON 文件生成 TypeScript 接口?目前尚不清楚您从哪里开始以及您希望在哪里结束。 作为一个新手,我很确定自己要做什么,但我想最终迭代 JSON 并从其中的每个对象中获取一些数据 在这种情况下,我上面的回答会做你需要做的事情。还有Array#forEach(),如果您想对每个 JSON 对象执行一些任意操作 - 即,您不想返回结果。让我知道这是否有意义。 有道理,目前唯一的问题是我的 JSON 在不同的文件中(runners.json),我不确定我能否完全按照您的建议实现它。我错了吗? 10 倍顺便说一句...

以上是关于将 JSON 接口转换为数组的主要内容,如果未能解决你的问题,请参考以下文章

将 JSValue 转换为类型化数组

C#如何将OBJECT转换成数组

将数组转换为 JSON 文件

如何将Json数组键转换为小写?

将 JSON 数组转换为 XML

如何将 json 转换为 typescript 接口?