Преобразовать многомерный массив JavaScript в JSON?

Использование RequestHeaderMapping работает еще лучше, потому что оно также устанавливает Content-Type = application/json в заголовке ответа, что позволяет Firefox (с надстройкой JSONView) отформатировать ответ как JSON.

GlobalConfiguration.Configuration.Formatters.JsonFormatter.MediaTypeMappings
.Add(new System.Net.Http.Formatting.RequestHeaderMapping("Accept", 
                              "text/html",
                              StringComparison.InvariantCultureIgnoreCase,
                              true, 
                              "application/json"));
40
задан Kris Jordan 20 January 2009 в 06:47
поделиться

5 ответов

Большинству популярных платформ JavaScript включали функции утилиты JSON. Например, jQuery имеет функцию, которая непосредственно называет URL и загружает результат JSON как объект: http://docs.jquery.com/Getjson

Однако можно получить синтаксический анализатор JSON с открытым исходным кодом и stringifier от json веб-сайт :

https://github.com/douglascrockford/JSON-js

Затем просто включайте код и используйте JSON.stringify () метод на Вашем массиве.

28
ответ дан Jamie Bull 7 July 2019 в 01:13
поделиться

Вы могли использовать закодировать функцию эта библиотека .

0
ответ дан Kev 7 July 2019 в 01:13
поделиться

Не уверен, что я полностью понимаю ваш вопрос, но если вы пытаетесь преобразовать объект в строку JSON, вы, вероятно, захотите посмотреть на встроенную поддержку JSON во всех новых браузерах. Вот сообщение Резига об этом. Для браузеров, которые еще не поддерживают его, попробуйте библиотеку json2.js . JSON.stringify (obj) преобразует ваш объект в строку JSON.

5
ответ дан 27 November 2019 в 02:49
поделиться

"Лучший" способ был предоставлен другими плакатами. Если вам не нужны полные кодировочные возможности ссылающихся библиотек, а нужно только кодировать простые массивы, то попробуйте:

<!DOCTYPE html>
<html>
<head>
<title>Simple functions for encoding Javascript arrays into JSON</title>
<script type="text/javascript">

window.onload = function() {
  var a = [
    [0, 1, '2', 3],
    ['0', '1', 2],
    [],
    ['mf', 'cb']
  ],
  b = [
    0, '1', '2', 3, 'woohoo!'
  ];
  alert(array2dToJson(a, 'a', '\n'));
  alert(array1dToJson(b, 'b'));
};

function array2dToJson(a, p, nl) {
  var i, j, s = '{"' + p + '":[';
  nl = nl || '';
  for (i = 0; i < a.length; ++i) {
    s += nl + array1dToJson(a[i]);
    if (i < a.length - 1) {
      s += ',';
    }
  }
  s += nl + ']}';
  return s;
}

function array1dToJson(a, p) {
  var i, s = '[';
  for (i = 0; i < a.length; ++i) {
    if (typeof a[i] == 'string') {
      s += '"' + a[i] + '"';
    }
    else { // assume number type
      s += a[i];
    }
    if (i < a.length - 1) {
      s += ',';
    }
  }
  s += ']';
  if (p) {
    return '{"' + p + '":' + s + '}';
  }
  return s;
}

</script>
</head>
<body>
</body>
</html>
14
ответ дан 27 November 2019 в 02:49
поделиться

Я немного изменил ранее предоставленный код ... потому что JSON имеет следующий формат: [{"объект": {"свойство_1": "значение_1", "свойство_2": "значение_2"}}]

Итак, код будет ...

<!DOCTYPE html>
<html>
<head>
    <title>Simple functions for encoding Javascript arrays into JSON</title>
    <script type="text/javascript">

    window.onload = function(){
      var a = [['property_1','value_1'],['property_2', 'value_2']];
      alert("Comienzo..., paso ////"+a+"\\\\\\ a formato JSON");
      var jsonSerialized = array2dToJson(a, 'object');
      alert(jsonSerialized);
    };

    // Estructura de JSON [{"object":{"property_1":"value_1","property_2":"value_2"}}]

    function array2dToJson(a, p, nl) {
      var i, j, s = '[{"' + p + '":{';
      nl = nl || '';
      for (i = 0; i < a.length; ++i) {
        s += nl + array1dToJson(a[i]);
        if (i < a.length - 1) {
          s += ',';
        }
      }
      s += nl + '}}]';
      return s;
    }

    function array1dToJson(a, p) {
      var i, s = '';
      for (i = 0; i < a.length; ++i) {
        if (typeof a[i] == 'string') {
          s += '"' + a[i] + '"';
        }
        else { // assume number type
          s += a[i];
        }
        if (i < a.length - 1) {
          s += ':';
        }
      }
      s += '';
      if (p) {
        return '{"' + p + '":' + s + '}';
      }
      return s;
    }

    </script>
</head>
<body>
    <h1>Convertir un Array a JSON...</h1>
</body>
</html>
0
ответ дан 27 November 2019 в 02:49
поделиться
Другие вопросы по тегам:

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