Преобразовать массив JSON в объект или получить доступ к определенным узлам в массиве JSON? - PullRequest
0 голосов
/ 28 ноября 2011

Я использую jQuery для выполнения ajax-запроса к контроллеру MVC, который затем отправляет объект и возвращает обратно JSON-представление объекта, который возвращается обратно в ajax-запрос.Возвращаемый JSON выглядит следующим образом:

[
  {
    "Account_LocationDevices": [],
    "Account_ChannelTransactions": [],
    "Account_Location_PaymentTypes": [],
    "ID": 56,
    "AccountID": 1,
    "Name": "b",
    "Address1": "",
    "Address2": "",
    "City": "",
    "State": "",
    "ZipCode": "",
    "Country": "",
  }
]

Затем мне нужно получить доступ к определенным «узлам» этого массива JSON или преобразовать его обратно в объект и получить к нему доступ через объект.Кто-нибудь есть какие-либо предложения о том, как взять этот результат JSON и преобразовать его обратно в объект или получить доступ к определенным частям массива, без использования индексных чисел в случае изменения схемы?

Вот jQuery делает работу

$.ajax({
                            type: "POST",
                            url: "../Company/MicrosoftRMSStoreOperations",
                            data: { locationName: inputValue },
                            datatype: "json",
                            beforeSend: function () {

                            },
                            success: function (data) {
                                alert("Location successfully added!");
                                $('#locationDropDown').append(
                                    $('<option></option>').val().html()
                                );
                                $('#inputAddLocation').val("");
                                $('#AddLocation').animate({
                                width: 'toggle',
                                }, 100, function() {
                                //after animation
                                });
                               // window.location.href = window.location.href;
                            },
                            error: function () {
                                alert("Appears the database Gods did not agree");
                            }
                        });

Ответы [ 2 ]

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

Я добавил эту строку в случае успеха:

 var json = $.parseJSON(data);

Затем я мог бы получить доступ к массиву, например, «json [0] .ID» или «json [0] .Name»

Окончательный взгляд на реализованный код ...

 $.ajax({
                            type: "POST",
                            url: "../Company/MicrosoftRMSStoreOperations",
                            data: { locationName: inputValue },
                            datatype: "json",
                            beforeSend: function () {

                            },
                            success: function (data) {
                            var json = $.parseJSON(data);
                                alert("Location successfully added!");
                                $('#locationDropDown').append(
                                    $('<option></option>').val(json[0].ID.toString()).html(json[0].Name)
                                );
                                $('#inputAddLocation').val("");
                                $('#AddLocation').animate({
                                width: 'toggle',
                                }, 100, function() {
                                //after animation
                                });
                               // window.location.href = window.location.href;
                            },
                            error: function () {
                                alert("Appears the database Gods did not agree");
                            }
                        });
0 голосов
/ 28 ноября 2011

Прежде всего, это не ответ json, это пример:

{
    "glossary": {
        "title": "example glossary",
        "GlossDiv": {
            "title": "S",
            "GlossList": {
                "GlossEntry": {
                    "ID": "SGML",
                    "SortAs": "SGML",
                    "GlossTerm": "Standard Generalized Markup Language",
                    "Acronym": "SGML",
                    "Abbrev": "ISO 8879:1986",
                    "GlossDef": {
                        "para": "A meta-markup language, used to create markup languages such as DocBook.",
                        "GlossSeeAlso": ["GML", "XML"]
                    },
                    "GlossSee": "markup"
                }
            }
        }
    }
}

http://json.org/example.html

если вы используете метод $ .post в Jquery, вы можете указатьпоследний параметр как 'json', а затем вы можете получить такие элементы, как: (я предполагаю, что вы предоставляете структуру json в коде вашего контроллера)

var loc = data.Account_LocationDevices;

http://api.jquery.com/jQuery.post/

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