在cookie中存储多维数组?

Ste*_*anE 7 html javascript cookies

今天我有一个Ajax解决方案,服务器跟踪选择正在进行并更新页面.我正在重做这个,所以它将在客户端上使用javascript完成,直到用户实际提交数据,性能在旧解决方案的负载下非常糟糕.(C#,ASP.NET 4.0)

通过首先使用json 链接文本对其进行序列化,找到了存储数组的好方法

假设我有一个这样的数组:{Id,Value}

有什么建议我如何将上面的几个数组存储到cookie?

T.J*_*der 7

假设我有一个这样的数组:{Id,Value}

那不是阵列.那是一个对象.您可以在数组中复制多个副本:

[
    {"foo": "bar"},
    {"foo": "baz"},
    {"foo": "boom"}
]
Run Code Online (Sandbox Code Playgroud)

这是包含对象的数组的有效JSON字符串 - 在这种情况下,具有单个属性的对象foo,每个属性都有自己的值,但对象不必具有相同的属性,并且它们可以具有多个属性.例如:

[
    {},
    ["zero", "one", "two", "three"],
    "I'm just a string",
    {
       "f0": "foo zero",
       "f1": "foo one",
       "f2": "foo two",
       "all": ["foo zero", "foo one", "foo two"]
    },
    42
]
Run Code Online (Sandbox Code Playgroud)

对于包含五个条目的数组,这是一个有效的JSON字符串:

  • 没有属性的对象(例如,"空白"对象).
  • 包含四个条目的数组.
  • 一个字符串.
  • 具有四个属性的对象:f0,f1,f2,和all.f0,f1f2所有都有字符串值; all有一个字符串数组作为值.
  • 生命,宇宙和万物的答案.

您可以将对象或数组转换为有效的JSON字符串(stringify),并使用多个库中的任何一个来反转进程(解析)客户端.Crockford(JSON的发明者)在他的github页面上有几个,最着名的是json2.js,尽管json2.js依赖于eval解析; 因为那不是很理想,你可以使用json_parse.js(不使用的递归下降解析器eval)或json_parse_state.js(不使用的状态机eval).