Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSON示例让我困惑-关于JSON.parse、JSON.stringify、localStorage.setItem和localStorage.getItem_Javascript_Json_Web Storage - Fatal编程技术网

Javascript JSON示例让我困惑-关于JSON.parse、JSON.stringify、localStorage.setItem和localStorage.getItem

Javascript JSON示例让我困惑-关于JSON.parse、JSON.stringify、localStorage.setItem和localStorage.getItem,javascript,json,web-storage,Javascript,Json,Web Storage,我刚刚开始学习JSON,W3schools并不擅长解释每一行的功能。我可以理解其中一些是什么意思,但我想完全理解 // Storing data: 1. myObj = {name: "John", age: 31, city: "New York"}; 2. myJSON = JSON.stringify(myObj); 3. localStorage.setItem("testJSON", myJSON); // Retrieving data: 4. text = localStorag

我刚刚开始学习JSON,W3schools并不擅长解释每一行的功能。我可以理解其中一些是什么意思,但我想完全理解

// Storing data:
1. myObj = {name: "John", age: 31, city: "New York"};
2. myJSON = JSON.stringify(myObj);
3. localStorage.setItem("testJSON", myJSON);

// Retrieving data:
4. text = localStorage.getItem("testJSON");
5. obj = JSON.parse(text);
6. document.getElementById("demo").innerHTML = obj.name;
所以我知道第一行是什么。它只是存储变量。 我假设第二行只是将变量存储转换成字符串。如果那不正确,请告诉我。 我不知道第三行是什么意思,有人能解释一下这是怎么回事吗

第4行和第5行也让我困惑。 第6行很容易理解


TLDR:第2、3、4和5行在做什么?

窗口。本地存储

localStorage
Web存储API
的一部分,它允许您在不过期的情况下存储某些数据,如
sessionStorage
。这是几乎所有现代浏览器的特性,它允许您存储键/值对以便重用它们。 它是用来替代一些cookies的

localStorage.getItem()
localStorage.setItem()
是最常用的方法,用于检索给定键的数据,并设置给定键的数据值

localStorage.setItem()
的典型用法是当您需要存储一些数据以备将来使用时,这样当用户刷新页面或打开其他页面时,数据就不会丢失。 当需要检索存储的数据时,可以使用
localStorage.getItem()

localStorage
类似,您有类似的
sessionStorage
。唯一的区别是
sessionStorage
有过期时间,所以最好在不想临时存储某些数据时使用它

重要提示: 请记住,以这种方式存储数据是不安全的,因此请避免存储机密数据

JSON.parse
JSON.stringify

JSON.parse
用于将JSON字符串格式转换为对象,而
JSON.stringify
用于将对象转换为字符串

JSON.parse的典型用法是从外部源获取字符串,因为字符串是存储数据的方式。它将字符串转换为对象,可以在JavaScript代码中使用该对象的数据属性进行操作。
JSON.stringify
主要用于在对对象的属性进行一些操作之后,将数据存储为字符串

查看有关Web存储API的更多信息:

关于JSON和
JSON.stringify
JSON.parse
方法:

  • 第2行将对象序列化为字符串以存储它
  • 。。。其中包含一种数据库(第3行)
  • 第4行要求本地存储器返回以前存储的值
  • 当它被序列化时(您将其存储在
    string
    ),您必须将其解析(“转换”)为JavaScript对象才能使用它(使用)
所以我知道第一行是什么。它只是存储变量

我假设第二行只是将变量存储转换成字符串

没错

我不知道第三行是什么意思

请参阅MDN文档。这一行与JSON对象本身无关,只是告诉您可以将该对象保存在
localStorage
上,并在以后再次加载该页面时使用它,顺便说一句,这正是第4行所做的


第5行所做的基本上与第2行
相反,因此您给它一个带有有效JSON的字符串,它返回一个正确的JS对象

以下是解释:

// Storing object with key name and city in a variable named myObj
1. myObj = {name: "John", age: 31, city: "New York"};

//Converting the myObj into a string representation called serializing/serialization
2. myJSON = JSON.stringify(myObj);

//Setting a key named testJSON in browsers localStorage
//coz You cannot store anything in localStorage except a string
3. localStorage.setItem("testJSON", myJSON);

// Retrieving data from the localStorage
4. text = localStorage.getItem("testJSON");

//Converting it back to object form from the string by parsing it
5. obj = JSON.parse(text);

//Setting the html of #demo element in dom to the name 
6. document.getElementById("demo").innerHTML = obj.name;

第一行:创建一个变量对象

第二行:将对象转换为JSON

第三行:将对象存储在localstorage上并设置其键值对。其密钥名为“testJSON”

第四行:使用其键检索localStorage

第五行:解析数据并将其转换为对象


第六行:在带有键“name”的对象上设置元素id值。

我将一步一步地浏览每一行

拯救
  • myObj={姓名:“约翰”,年龄:31岁,城市:“纽约”}
    
    • 这条线创建对象
  • myJSON=JSON.stringify(myObj)
    
    • 这一行将javascript对象转换为JSON字符串,可供任何接受JSON的应用程序使用
  • localStorage.setItem(“testJSON”,myJSON)
    
    • 现代浏览器有一个本地存储API,允许您在浏览器中存储数据。此行将该JSON字符串存储在localStorage中以供以后使用
  • 收回
  • text=localStorage.getItem(“testJSON”)
    
    • 此行正在检索存储的JSON字符串
  • obj=JSON.parse(文本)
    
    • 这会将检索到的JSON字符串解析回Javascript对象
  • document.getElementById(“demo”).innerHTML=obj.name
    
    • 这将访问您解析的对象的
      name
      属性,并将其打印到页面上的demo元素

  • 首先,请注意您在红色文本中提到的教程“您将在本教程后面了解更多关于JSON.parse()/JSON.stringify()的信息


    简而言之,stringify()是一个将json对象转换为字符串的函数。parse()是一个解析字符串以便从中生成输出的函数。

    MDN是一个更好的学习来源:同意Davide-查看MDN-,您甚至可以参考