Кодировка строки запроса объекта Javascript

Интерфейс Externalizable фактически не предоставлялся для оптимизации производительности процесса сериализации! но для предоставления средств для реализации собственной пользовательской обработки и обеспечения полного контроля над форматом и содержимым потока для объекта и его супер-типов!

Примерами этого является реализация AMF (ActionScript Message Format) удалять для передачи собственных объектов сценария действия по сети.

417
задан Sheharyar 5 March 2017 в 05:19
поделиться

5 ответов

как это?

 serialize = function (obj) {var str = []; for (var p in obj) if (obj.hasOwnProperty (p)) {str.push (encodeURIComponent (p) + "=" + encodeURIComponent (obj [p])); } return str.join ("&"); } console.log (сериализовать ({foo: "привет там", bar: "100%"})); // foo = hi% 20there & bar = 100% 25 

Изменить: этот также преобразует рекурсивные объекты (используя нотацию php «массив» для строки запроса)

 serialize = function (obj, prefix) {var str = [ ], п; for (p in obj) {if (obj.hasOwnProperty (p)) {var k = prefix? префикс + "[" + p + "]": p, v = obj [p]; str.push ((v! == null && typeof v === "объект")? serialize (v, k): encodeURIComponent (k) + "=" + encodeURIComponent (v)); }} return str.join ("&"); } консоль. журнал (сериализовать ({foo: "привет там", bar: {blah: 123, quux: [1, 2, 3]}})); // foo = hi% 20there & bar% 5Bblah% 5D = 123 & bar% 5Bquux% 5D% 5B0% 5D = 1 & bar% 5Bquux% 5D% 5B1% 5D = 2 & bar% 5Bquux% 5D% 5B2% 5D = 3 
765
ответ дан 22 November 2019 в 23:09
поделиться

Вот простой ответ, который имеет дело со строками и массивами одновременно во время преобразования.

jsonToQueryString: function (data) {
        return Object.keys(data).map((key) => {
            if (Array.isArray(data[key])) {
                return (`${encodeURIComponent(key)}=${data[key].map((item) => encodeURIComponent(item)).join('%2C')}`);
            }
            return(`${encodeURIComponent(key)}=${encodeURIComponent(data[key])}`);
        }).join('&');
    }
0
ответ дан Remario 29 August 2019 в 18:55
поделиться

вот простая реализация, которая получает объект и преобразовывает его для запросов строки параметрических усилителей

export function objectToQueryParams(queryParams: object): string {
  return queryParams ?
    Object.entries(queryParams).reduce((acc, [key, val], index) => {
      const sign = index === 0 ? '?' : '&';
      acc += `${sign}${key}=${val}`;
      return acc;
    }, '')
    : '';
}
1
ответ дан 22 November 2019 в 23:09
поделиться

использовать JSON.

взгляните на этот вопрос для идей о том, как реализовать.

8
ответ дан 22 November 2019 в 23:09
поделиться

Вам нужно отправлять произвольные объекты? Если это так, GET - плохая идея, поскольку существуют ограничения на длину URL-адресов, которые будут принимать пользовательские агенты и веб-серверы. Я предлагаю создать массив пар имя-значение для отправки, а затем создать строку запроса:

function QueryStringBuilder() {
    var nameValues = [];

    this.add = function(name, value) {
        nameValues.push( {name: name, value: value} );
    };

    this.toQueryString = function() {
        var segments = [], nameValue;
        for (var i = 0, len = nameValues.length; i < len; i++) {
            nameValue = nameValues[i];
            segments[i] = encodeURIComponent(nameValue.name) + "=" + encodeURIComponent(nameValue.value);
        }
        return segments.join("&");
    };
}

var qsb = new QueryStringBuilder();
qsb.add("veg", "cabbage");
qsb.add("vegCount", "5");

alert( qsb.toQueryString() );
11
ответ дан 22 November 2019 в 23:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: