Arrays angular 6中的json嵌套结构
我是个新手。我需要将数据发送到后端系统。对象的结构如下所示Arrays angular 6中的json嵌套结构,arrays,json,angular,typescript,Arrays,Json,Angular,Typescript,我是个新手。我需要将数据发送到后端系统。对象的结构如下所示 interface semester { Id: number; Semester: string; Year: number; course: course[]; } interface course { CourseNumber: number; CourseTitle: string; CurriculumID: string; } 我的用户界面会在每次按下add按钮并尝试开发一个对象时添加一个课程
interface semester {
Id: number;
Semester: string;
Year: number;
course: course[];
}
interface course {
CourseNumber: number;
CourseTitle: string;
CurriculumID: string;
}
我的用户界面会在每次按下add按钮并尝试开发一个对象时添加一个课程,如下所示,并将其发送到后端api
添加第一个课程:
[
{
"Id":"20193",
"Semester":"Fall",
"Year":"2018",
"course":[
{
"CourseNumber":"100",
"CourseTitle":"CEU: Contemporary Collective Bargaining",
"CurriculumID":"00004285"
}
]
}
]
当在不同的学期增加一门课程时
[
{
"Id":"20193",
"Semester":"Fall",
"Year":"2018",
"course":[
{
"CourseNumber":"100",
"CourseTitle":"CEU: Contemporary Collective Bargaining",
"CurriculumID":"00004285"
}
]
},
{
"Id":"20195",
"Semester":"Spring",
"Year":"2019",
"course":[
{
"CourseNumber":"230",
"CourseTitle":"American Indians of Minnesota",
"CurriculumID":"00007541"
}
]
}
]
第三次在上学期增加一门课程时,结构应如下所示
[
{
"Id":"20193",
"Semester":"Fall",
"Year":"2018",
"course":[
{
"CourseNumber":"100",
"CourseTitle":"CEU: Contemporary Collective Bargaining",
"CurriculumID":"00004285"
},
{
"CourseNumber":"101",
"CourseTitle":"Design Foundations",
"CurriculumID":"00000897"
}
]
},
{
"Id":"20195",
"Semester":"Spring",
"Year":"2019",
"course":[
{
"CourseNumber":"230",
"CourseTitle":"American Indians of Minnesota",
"CurriculumID":"00007541"
}
]
}
]
单击按钮后从表单捕获的结果
this.selectedSemester={Id: "20193", Semester: "Fall ", Year: "2018"};
this.selectedCourse={CourseNumber:"240",CourseTitle:"Painting",CurriculumID:"00001025"}
并编写了一个addCourse方法,以所需格式捕获数据
courseList: semester[];
addCourse(){
this.courseList.push({
Id: this.selectedSemester.Id,
Semester: this.selectedSemester.Semester,
Year: this.selectedSemester.Year,
course: this.selectedCourse
}
);
}
在本学期中,Id是唯一的键Id。有人能帮助你用语法来形成这个对象吗。你可以用这种方式来组装你的对象 你有你的接口
export interface ISemester {
Id: number;
Semester: string;
Year: number;
course: ICourse[];
}
export interface ICourse {
CourseNumber: number;
CourseTitle: string;
CurriculumID: string;
}
您拥有实现接口的模型
export class Semester implements ISemester {
Id: number;
Semester: string;
Year: number;
course: ICourse[];
}
export class Course implements ICourse {
CourseNumber: number;
CourseTitle: string;
CurriculumID: string;
}
您有一个ISemester类型的列表,可以在其中推入对象。本学期对象将获取课程对象,您将其推送到课程列表中
const semesters: Array<ISemester> = [];
const semester1 = new Semester();
semester1.Id = 1000;
semester1.Semester = 'Semester1';
semester1.Year = 2018;
const course1 = new Course();
course1.CourseNumber = 1;
course1.CourseTitle = 'Title1';
course1.CurriculumID = '00123';
semester1.course.push(course1);
const course2 = new Course();
course1.CourseNumber = 5;
course1.CourseTitle = 'Title2';
course1.CurriculumID = '00124';
semester1.course.push(course2);
semesters.push(semester1);
const semester2 = new Semester();
semester1.Id = 1001;
semester1.Semester = 'Semester2';
semester1.Year = 2019;
const course3 = new Course();
course1.CourseNumber = 101;
course1.CourseTitle = 'Title4';
course1.CurriculumID = '00800';
semester1.course.push(course3);
semesters.push(semester2);
const学期:数组=[];
const semester1=新学期();
semester1.Id=1000;
学期='semester1';
学期1年=2018年;
const course1=新课程();
course1.CourseNumber=1;
course1.CourseTitle='Title1';
course1.coursumid='00123';
学期1.课程1.推送(课程1);
const course2=新课程();
course1.CourseNumber=5;
course1.CourseTitle='Title2';
course1.coursumid='00124';
学期1。课程。推(课程2);
学期。推送(学期1);
const semester2=新学期();
semeste1.Id=1001;
学期1。学期=‘学期2’;
学期1。年份=2019年;
const course3=新课程();
course1.CourseNumber=101;
course1.CourseTitle='Title4';
course1.coursumid='00800';
学期1。课程。推(课程3);
学期。推送(学期2);
这将产生包含一门或n门课程的学期列表。您可以通过这种方式组合对象 你有你的接口
export interface ISemester {
Id: number;
Semester: string;
Year: number;
course: ICourse[];
}
export interface ICourse {
CourseNumber: number;
CourseTitle: string;
CurriculumID: string;
}
您拥有实现接口的模型
export class Semester implements ISemester {
Id: number;
Semester: string;
Year: number;
course: ICourse[];
}
export class Course implements ICourse {
CourseNumber: number;
CourseTitle: string;
CurriculumID: string;
}
您有一个ISemester类型的列表,可以在其中推入对象。本学期对象将获取课程对象,您将其推送到课程列表中
const semesters: Array<ISemester> = [];
const semester1 = new Semester();
semester1.Id = 1000;
semester1.Semester = 'Semester1';
semester1.Year = 2018;
const course1 = new Course();
course1.CourseNumber = 1;
course1.CourseTitle = 'Title1';
course1.CurriculumID = '00123';
semester1.course.push(course1);
const course2 = new Course();
course1.CourseNumber = 5;
course1.CourseTitle = 'Title2';
course1.CurriculumID = '00124';
semester1.course.push(course2);
semesters.push(semester1);
const semester2 = new Semester();
semester1.Id = 1001;
semester1.Semester = 'Semester2';
semester1.Year = 2019;
const course3 = new Course();
course1.CourseNumber = 101;
course1.CourseTitle = 'Title4';
course1.CurriculumID = '00800';
semester1.course.push(course3);
semesters.push(semester2);
const学期:数组=[];
const semester1=新学期();
semester1.Id=1000;
学期='semester1';
学期1年=2018年;
const course1=新课程();
course1.CourseNumber=1;
course1.CourseTitle='Title1';
course1.coursumid='00123';
学期1.课程1.推送(课程1);
const course2=新课程();
course1.CourseNumber=5;
course1.CourseTitle='Title2';
course1.coursumid='00124';
学期1。课程。推(课程2);
学期。推送(学期1);
const semester2=新学期();
semeste1.Id=1001;
学期1。学期=‘学期2’;
学期1。年份=2019年;
const course3=新课程();
course1.CourseNumber=101;
course1.CourseTitle='Title4';
course1.coursumid='00800';
学期1。课程。推(课程3);
学期。推送(学期2);
这将产生包含一门或n门课程的学期列表。下面是一个示例,说明如何根据更新的信息处理对象:
courseList: Array<ISemester> = [];
addCourse(){
this.selectedSemester={Id: "20193", Semester: "Fall ", Year: "2018", course: []};
this.selectedCourse={CourseNumber:"240",CourseTitle:"Painting",CurriculumID:"00001025"}
// Add the semester and get the reference to it
const currentSemester = this.addSemester(this.selectedSemester);
// Add the selected course to the referenced semester in the courseList
this._addCourse(this.selectedCourse, currentSemester);
}
/**
* This method first checks whether the semester is already listed.
* If not, the semester will be added.
* The method finally returns the reference to the semester object in the list.
*/
private addSemester(semester: ISemester): ISemester {
let isInList: boolean = false;
let currentSemester: ISemester;
// walk through the semester list
this.courseList.forEach(element => {
// if the semester is already listed
if(element.Id === semester.Id){
// memorize this and let the return value (currentSemester)
// be a reference to the semester element in the list
isInList = true;
currentSemester = element;
// stop iteration
break;
}
});
// if there was no match, add the semester to the courseList
if(!isInList) {
currentSemester = semester;
this.courseList.push(semester);
}
return currentSemester;
}
private _addCourse(course: ICourse, semester: ISemester) {
// if the course is not yet listed
if(this.semester.course.filter(element => element.Id === course.Id).length < 0){
// add it
this.semester.course.push(course);
}
}
courseList:Array=[];
addCourse(){
this.selectedSerm={Id:“20193”,Serm:“秋季”,Year:“2018”,课程:[]};
this.selectedCourse={CourseNumber:“240”,CourseTile:“绘画”,CourseId:“00001025”}
//添加学期,并获取该学期的参考资料
const currentSerm=this.addSerm(this.selectedSerm);
//将所选课程添加到课程列表中的参考学期
本课程(本课程,当前学期);
}
/**
*此方法首先检查学期是否已列出。
*如果没有,将增加学期。
*该方法最终返回对列表中Serm对象的引用。
*/
私人学期(学期:iMester):iMester{
设isInList:boolean=false;
当前学期:iMester;
//浏览学期清单
this.courseList.forEach(元素=>{
//如果学期已经列出
if(element.Id==sement.Id){
//记住这一点,并让返回值(CurrentSerm)
//作为列表中学期元素的引用
isInList=真;
当前学期=元素;
//停止迭代
打破
}
});
//如果没有匹配项,则将该学期添加到课程列表中
如果(!isInList){
当前学期=学期;
本.课程表.推送(学期);
}
返回当前学期;
}
私人课程(课程:ICourse,学期:iMester){
//如果课程尚未列出
if(this.sement.course.filter(element=>element.Id==course.Id).length<0){
//加上
本.学期.课程.推(课程);
}
}
以下是一个示例,说明如何根据更新的信息处理对象:
courseList: Array<ISemester> = [];
addCourse(){
this.selectedSemester={Id: "20193", Semester: "Fall ", Year: "2018", course: []};
this.selectedCourse={CourseNumber:"240",CourseTitle:"Painting",CurriculumID:"00001025"}
// Add the semester and get the reference to it
const currentSemester = this.addSemester(this.selectedSemester);
// Add the selected course to the referenced semester in the courseList
this._addCourse(this.selectedCourse, currentSemester);
}
/**
* This method first checks whether the semester is already listed.
* If not, the semester will be added.
* The method finally returns the reference to the semester object in the list.
*/
private addSemester(semester: ISemester): ISemester {
let isInList: boolean = false;
let currentSemester: ISemester;
// walk through the semester list
this.courseList.forEach(element => {
// if the semester is already listed
if(element.Id === semester.Id){
// memorize this and let the return value (currentSemester)
// be a reference to the semester element in the list
isInList = true;
currentSemester = element;
// stop iteration
break;
}
});
// if there was no match, add the semester to the courseList
if(!isInList) {
currentSemester = semester;
this.courseList.push(semester);
}
return currentSemester;
}
private _addCourse(course: ICourse, semester: ISemester) {
// if the course is not yet listed
if(this.semester.course.filter(element => element.Id === course.Id).length < 0){
// add it
this.semester.course.push(course);
}
}
courseList:Array=[];
addCourse(){
this.selectedSerm={Id:“20193”,Serm:“秋季”,Year:“2018”,课程:[]};
this.selectedCourse={CourseNumber:“240”,CourseTile:“绘画”,CourseId:“00001025”}
//添加学期,并获取该学期的参考资料
const currentSerm=this.addSerm(this.selectedSerm);
//将所选课程添加到课程列表中的参考学期
本课程(本课程,当前学期);
}
/**
*此方法首先检查学期是否已列出。
*如果没有,将增加学期。
*该方法最终返回对列表中Serm对象的引用。
*/
私人学期(学期:iMester):iMester{
设isInList:boolean=false;
当前学期:iMester;
//浏览学期清单
this.courseList.forEach(元素=>{
//如果学期已经列出
if(element.Id==sement.Id){
//记住这一点,并让返回值(CurrentSerm)
//作为学期ele的参考