【问题标题】:JavaScript - Can we set javascript objects in cookies?JavaScript - 我们可以在 cookie 中设置 javascript 对象吗?
【发布时间】:2012-04-24 12:46:39
【问题描述】:

我正在尝试将一个 javascript 对象放入 Cookie 中,但不知何故它被转换为 String 对象。有什么方法可以在 JavaScript cookie 中设置对象?

【问题讨论】:

  • 不行,只能存储字符串数据。但是普通对象可以轻松地来回转换为 JSON。
  • @Bergi:+1 表示“普通对象”。

标签: javascript cookies


【解决方案1】:

您可以使用JSON.stringify() 将对象转换为 JSON 字符串并存储。然后当你阅读它们时,使用JSON.parse()将字符串转换为对象

另外,最好使用LocalStorage 而不是 cookie 来存储更大的数据。两者都存储字符串,但 cookie 只有 4kb,而 LocalStorage 大约 5-10MB。

【讨论】:

    【解决方案2】:

    您可以在保存到cookie之前将Object转换为JSON,并在从cookie中获取之后从JSON转换为Object。

    【讨论】:

      【解决方案3】:

      这个函数会将对象转换成字符串,用它来字符串化对象,然后添加到cookie中。

      function JSONToString(Obj){
      
      var outStr ='';
      for (var prop in Obj) {
          outStr = '{';
          if (Obj.hasOwnProperty(prop)) {
              if(typeof Obj[prop] == 'object'){
                  outStr += JSONToString(Obj[prop]);
              } else {
                  outStr += prop + ':' + Obj[prop].toString();
              }
          }  
          outStr += '}';
      }
      return outStr;
      }
      

      【讨论】:

      • 我不能这样写 JSON.stringify() - 这不会转换为字符串吗?
      • JSON JS 说这个 var myJSONText = JSON.stringify(myObject, replacer);
      • github.com/douglascrockford/JSON-js(使用 json2.js)将字符串字符串化和/或解析为对象。上面的代码告诉你到底要做什么。
      【解决方案4】:

      使用 JSON - JavaScript 对象表示法。这是一个不错的tutorial on using JSON

      长话短说:它是将任何对象转换为特殊格式的文本字符串并返回的标准。所以你会在 cookie 中存储一个 JSON 字符串。

      【讨论】:

      • Not any - 如果x 是循环的,或者有函数,那么JSON.parse(JSON.stringify(x)) 将不会重构为x