преобразовать объект JSON в строку запроса, а затем обратно в объект - PullRequest
2 голосов
/ 01 ноября 2011

Я знаю, что об этом спрашивали несколько раз, но, пожалуйста, потерпите меня.

У меня есть довольно сложный объект карт Google (он содержит различные узлы, координаты и т. Д.), И я пытаюсь передать его.это как строка запроса.

Мне нужно решение play javascript / jQuery.

Я пробовал метод .param, который выдает ошибку jQuery.Единственное, что работает, это метод "stringify", который затем создает строку, которая при отображении в виде URL выглядит примерно так:% 7B% 5C "shape_1% 5C"% 3A% 7B% 5C "цвет% 5C"% 3A% 5C "% 237F0000% 5C" % 2C% 5C% "данные 5C" % 3A% 7B% 5C "б% 5C" % 3A% 5B% 7B% 5C "На% 5C" % 3A51.56727431757122% 2C% 5C»Oa% 5C "% 3A-0.10462402858888709% 7D% 2C ....

php переводит это как: {\\" shape_1 \\ ": {\\" color \\ ": \\" # 7F0000\\», \\ "\\ данных": {\\ "\\ б": [{\\ "\\ Na": +51,56727431757122, \\ "\\ Оа": - +0,10462402858888709}, ...

но, сказав, что я не хочу использовать PHP, я просто показываю вам, что он делает, в случае, если он помогает вам увидеть, что stringify сделала с объектом.

После того, как я удалился с помощью Javascriptвыглядит немного более нормально, как:

{\ "shape_1 \": {\ "color \": \ "# 7F0000 \", \ "data \": {\ "b \": [{\ \"Na \": 51.56727431757122, \ "Oa \": - 0.10462402858888709}, ..

Таким образом, как вы можете видеть, последовательность без выхода имеет эти косые черты везде.Когда я пытаюсь преобразовать это в объект JSON, я получаю «Незаконный токен».Метод разбора также не работает.Я просто не могу найти способ поместить эту строку обратно в сложный объект JSON, которым она была.Я искал в Интернете различные предложения, но они терпят неудачу.Я также не понимаю, почему stringify вводит все эти слэши, которых просто не должно быть.Если у кого-то есть идея, как взять этот объект, поместить его в строку запроса и затем проанализировать его, я был бы очень признателен.

Ник


Обновление: ответ таков:

encodeURIComponent(JSON.stringify(myObject));

А затем на приемном конце:

var a = querySt("data");
var b = decodeURIComponent(a);
var c = unescape(b);
var d = JSON.parse(c);

или все в одной строке

JSON.parse(unescape(decodeURIComponent(querySt("data"))));

Ник

Ответы [ 2 ]

0 голосов
/ 19 декабря 2013

Попробуйте преобразовать строку запроса в объект json

var queryStringToJSON = function (url) {
    if (url === '')
       return '';
    var pairs = (url || location.search).slice(1).split('&');
    var result = {};
    for (var idx in pairs) {
    var pair = pairs[idx].split('=');
    if (!!pair[0])
        result[pair[0].toLowerCase()] = decodeURIComponent(pair[1] || '');
    }
   return result;
}

Вы можете использовать метод jQuery.param , чтобы преобразовать объект json обратно в строку запроса

0 голосов
/ 01 ноября 2011

См. http://php.net/manual/de/security.magicquotes.php - вы должны отключить магические кавычки. Они старые, устаревшие вещи, они небезопасны и ломают вещи.

Magic Quotes - это процесс, который автоматически экранирует входящие данные в скрипт PHP. Рекомендуется кодировать с отключенными магическими кавычками и вместо этого экранировать данные при необходимости.

Howto: http://www.php.net/manual/de/security.magicquotes.disabling.php

...