使用JSON数组内容的原型函数创建JavaScript对象

我有一个
JSON结构;

{ 
  books: [ 
    {"id": "book1", "title": "Book One"}, 
    {"id": "book2", "title": "Book Two"} 
  ] 
}

代表;

function BookList() {
    this.books = new Array();
}

BookList.prototype.addBook = function(b) {
    this.books[this.books.length] = b;
}

function Book(id, title) {
    this.id = id || '';
    this.title = title || '';
    this.chapters = new Array();
}

Book.prototype.addChapter = function(c) {
    this.chapters[this.chapters.length] = c;
}

在BookList中创建Book对象数组的最佳方法是什么?

使用jQuery,您只需使用$.parseJSON(jsonData).books来分配BookList数组并自动获取属性值,但不会使用原型函数创建所需的对象.

是迭代JSON数组并单独创建每个Book对象的唯一方法吗?这个问题涉及从JSON:Parse JSON String into a Particular Object Prototype in JavaScript创建特定的原型对象.

我想这可以扩展为适用于具有正确迭代级别的BookList,并从那里应用于Book对象的章节.

在使用$.parseJSON进行初始赋值后是否可以更改对象类型?

最佳答案

var json = { 
  books: [ 
    {"id": "book1", "title": "Book One"}, 
    {"id": "book2", "title": "Book Two"} 
  ] 
};

var list = new BookList();
list.books = json.books.map(convertToBook);

function convertToBook(book) {
  return new Book(book.id, book.title);
}
点赞