Хранить многомерный массив в куки? - PullRequest
7 голосов
/ 17 января 2011

Сегодня у меня есть решение Ajax, где сервер отслеживает выборки и обновляет страницу.Я переделываю это, так что все будет сделано с помощью javascript на клиенте до тех пор, пока пользователь фактически не отправит данные, производительность которых довольно низкая под нагрузкой со старым решением.(C #, ASP.NET 4.0)

Нашел хороший способ хранения массива, сначала сериализовав его с помощью json текст ссылки

Скажем, у меня есть такой массив:{Id, Value}

Кто-нибудь посоветует, как я могу сохранить несколько вышеупомянутых массивов в cookie?

Ответы [ 4 ]

7 голосов
/ 17 января 2011

Скажем, у меня есть такой массив: {Id, Value}

Это не массив. Это объект. Вы можете сделать несколько копий в массиве:

[
    {"foo": "bar"},
    {"foo": "baz"},
    {"foo": "boom"}
]

Это допустимая JSON строка для массива, содержащего объекты & mdash; в этом случае объекты с одним свойством 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
]

Это допустимая строка JSON для массива с пятью записями:

  • Объект без свойств (например, «пустой» объект).
  • Массив с четырьмя записями.
  • Строка.
  • Объект с четырьмя свойствами: f0, f1, f2 и all. f0, f1 и f2 имеют строковые значения; all имеет массив строк в качестве значения.
  • Ответ на Жизнь, Вселенную и Все.

Вы можете превратить объект или массив в допустимую строку JSON (stringify) и обратить процесс (синтаксический анализ) на стороне клиента, используя любую из нескольких библиотек. У Крокфорда (изобретателя JSON) есть несколько на его странице github , в первую очередь json2.js, хотя json2.js использует eval для анализа; поскольку это не совсем идеально, вы можете вместо этого использовать json_parse.js (анализатор рекурсивного спуска, который не использует eval) или json_parse_state.js (конечный автомат, который не использует eval).

1 голос
/ 23 февраля 2014

Преобразование массива в строку:

> JSON.stringify([1, 2])
*returns* '[1, 2]'

Затем мы можем сделать его cookie:

> $.cookie('cookie', '[1, 2]')

И затем проанализировать его:

> JSON.parse($.cookie('cookie'))
*returns* [1, 2]
1 голос
/ 17 января 2011

Cookies хранят только простые строки. Вы можете придумать свою собственную систему примерно так:

$content = [id,value];[text,textvalue];
setcookie("Array", $content);

Когда вы хотите вернуть его обратно, вы разбиваете строку на разделители (в данном случае ';' и ',')

1 голос
/ 17 января 2011

Используйте JSON.stringify для генерации строки из объекта массива.

http://msdn.microsoft.com/en-us/library/cc836459(v=vs.85).aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...