Массив Javascript, преобразованный в объекты JSON вместо массива - PullRequest
3 голосов
/ 11 июля 2011

Я пытаюсь отправить JSON в свое веб-приложение и хочу, чтобы JSON был таким:

{ 
  "thing1" : 
  {
    "something" : "hello"
  },

  "list_of_things" :
  [
   {
     "item1" : "hello"
   },
   {
     "item2" : "hello"
   }
  ]
}

Здесь у меня есть один объект JSON и массив JSON, который содержит объекты JSON. Когда я создаю данные для отправки в Javascript, я делаю:

form = {
  "thing1" : {
    "something" : somethingVariable
  },
  "list_of_things" : listArray
}

Здесь listArray - это объект Javascript Array из хеш-объектов Javascript. Я отправляю это с помощью метода jQuery ajax, но вместо отображения массива javascript в виде желаемого массива JSON он преобразует его в серию объектов JSON, например:

{ "1" : { "thing1" : "something" }, "2" : { "thing2" : "something" }...

Как получить массив для отправки в виде массива, а не для преобразования в серию объектов JSON с индексами массива в качестве ключей?

РЕДАКТИРОВАТЬ # 1: 'listArray' - это простой массив Javascript, который определяется следующим образом:

var listArray = new Array();
listArray.push({ "thing1" : "something" });
listArray.push({ "thing2" : "something" });

РЕДАКТИРОВАТЬ # 2: «форма» отправляется на сервер со следующим вызовом:

$.ajax({
  type: 'POST',
  url: '/url',
  dataType: "json",
  data: form,
  success: function(data) {
    /* success code here */
  }
});

1 Ответ

3 голосов
/ 11 июля 2011

Посмотрите здесь .Если вы действительно пытаетесь опубликовать JSON, вам нужно отправить строку, а не объектный литерал.Вы можете использовать JSON.stringify ( или более поддерживаемое решение JSON ) на form.

$.ajax({
    url: "/url",,
    dataType: "json",
    type: "POST",
    processData: false,
    contentType: "application/json",
    data: JSON.stringify(form)
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...