Javascript 在下面的代码中,JSON.parse()和JSON.stringify()在做什么。我正在建一个图书图书馆

Javascript 在下面的代码中,JSON.parse()和JSON.stringify()在做什么。我正在建一个图书图书馆,javascript,json,oop,Javascript,Json,Oop,这是我为本地存储书籍而编写的代码。我在构建一个Youtube教程的时候看了它,我似乎还不了解JSON的作用。localStorage可以以字符串格式保存数据,所以在Javascript中将其用作对象数据之前,需要使用JSON.parse()方法将其转换为对象 将其保存回localStorage时,需要使用JSON.stringify()JSON.parse(localStorage.getItem('books'))从localStorage(始终是字符串)获取books的值,并将该值解析为ja

这是我为本地存储书籍而编写的代码。我在构建一个Youtube教程的时候看了它,我似乎还不了解JSON的作用。localStorage可以以字符串格式保存数据,所以在Javascript中将其用作对象数据之前,需要使用JSON.parse()方法将其转换为对象

将其保存回localStorage时,需要使用JSON.stringify()

JSON.parse(localStorage.getItem('books'))
从localStorage(始终是字符串)获取
books
的值,并将该值解析为javascript对象。
另一方面,
localStorage.setItem('books',JSON.stringify(books))
将对象转换为字符串,以便可以在
localStorage
中设置它(您只能将字符串放入本地存储)。

阅读此内容:您可以在此处阅读JSON:。总而言之:
JSON.stringify()
方法将JavaScript对象或值转换为JSON字符串,而
JSON.parse()
方法解析JSON字符串,构造字符串描述的JavaScript值或对象。setItem不正确。。。您正在字符串化一个字符串,而不是variableAs@charlietfl所说的,更详细一点:您使用了
localStorage.setItem('books',JSON.stringify('books'))
,您应该使用的地方(根据您的感知意图猜测)
localStorage.setItem('books',JSON.stringify(books))
。您是正确的。正如@charlietfl在对问题的评论中指出的那样,OP犯了一个错误,即
stringify('books')
,而不是
stringify(books)
。只是指出它=不是你的错=只是像我一样错过了它,直到我看到评论。。。
class Store{


    static getBooks(){
        let books;
        if(localStorage.getItem('books') === null){
             books = [];
        }else{
            books = JSON.parse(localStorage.getItem('books'));
        }

        return books;
    }

    static addBook(book){
        //get the books form The GetBooks() Function
        const books = Store.getBooks();

        books.push(book);
        localStorage.setItem('books',JSON.stringify('books'));
    }
       
}