Как получить значения из объекта JSON Key / Value

0

В настоящее время работает над приложением asp.net mvc 4.

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

Внутри представления у меня есть следующее:

<script type="text/javascript">
    $(document).ready(function () {

        var resultJSON = $.parseJSON(JSON.stringify(@Html.Raw(Model.Json)));
        console.log(resultJSON);
    });
</script>

После того, как я console.log(resultJSON), я получаю следующий результат:

{
    "Log": {
        "ShowFormatDropdown": true,
        "ShowGroupDropdown": false,
        "ShowStartDateAndYearDropdown": false,
        "ShowEndDateAndYearDropdown": false,
        "ShowStartEndDateTextbox": true,
        "ShowMachineNameDropdown": true,
        "ShowSeverityDropdown": true,
        "ShowSummaryDetailRadioButton": false,
        "ShowMessageTextbox": true,
        "ShowIPAddressTextbox": true,
        "ShowCorrelationTextbox": true,
        "ShowDINTextbox": false
    },
    "RefillRequest": {
        "ShowFormatDropdown": true,
        "ShowGroupDropdown": true,
        "ShowStartDateAndYearDropdown": true,
        "ShowEndDateAndYearDropdown": true,
        "ShowStartEndDateTextbox": false,
        "ShowMachineNameDropdown": false,
        "ShowSeverityDropdown": false,
        "ShowSummaryDetailRadioButton": true,
        "ShowMessageTextbox": false,
        "ShowIPAddressTextbox": false,
        "ShowCorrelationTextbox": false,
        "ShowDINTextbox": false
    },
    "PatientSubscriptions": {
        "ShowFormatDropdown": true,
        "ShowGroupDropdown": true,
        "ShowStartDateAndYearDropdown": true,
        "ShowEndDateAndYearDropdown": true,
        "ShowStartEndDateTextbox": false,
        "ShowMachineNameDropdown": false,
        "ShowSeverityDropdown": false,
        "ShowSummaryDetailRadioButton": true,
        "ShowMessageTextbox": false,
        "ShowIPAddressTextbox": false,
        "ShowCorrelationTextbox": false,
        "ShowDINTextbox": false
    }
}

Моя цель - иметь функцию, в которой я могу передать Key такой как " RefillRequest ":

var settings = mySuperFunction(resultJSON, "RefillRequest");

Это, в свою очередь, settings будет словарь, содержащий только соответствующие значения на основе ключа " RefillRequest ", в котором я прошел.

settings будут содержать что-то вроде:

"ShowFormatDropdown": true,
"ShowGroupDropdown": true,
"ShowStartDateAndYearDropdown": true,
"ShowEndDateAndYearDropdown": true,
"ShowStartEndDateTextbox": false,
"ShowMachineNameDropdown": false,
"ShowSeverityDropdown": false,
"ShowSummaryDetailRadioButton": true,
"ShowMessageTextbox": false,
"ShowIPAddressTextbox": false,
"ShowCorrelationTextbox": false,
"ShowDINTextbox": false

Мне нужно немного помочь с этим, так как я не эксперт jQuery/Array/Dictionary.

Заранее спасибо! С уважением

Винс

  • 0
    Почему бы просто не получить к нему доступ, используя точечные обозначения или квадратные скобки?
  • 0
    Почему ты спрашиваешь? Честно говоря, как бы безумно это ни звучало, я не задумывался об этом и думал над этим. К счастью, такие люди, как вы здесь, чтобы помочь :-)
Теги:

3 ответа

2
Лучший ответ

Просто используйте resultJSON.RefillRequest, он RefillRequest вам свойство RefillRequest

По моему пониманию, если вам нужно передать ключ, вы можете использовать это

var settings = resultJSON["RefillRequest"];
  • 0
    Спасибо ... ты не представляешь, как сложнее я смотрел на это.
1

В то время как ответ Satpal верен, вы можете использовать это, чтобы получить словарь для любого ключа:

function mySuperFunction(obj, key) {
    return (key in object) ? object[key] : null;
}

Таким образом, вызов mySuperFunction(resultJSON, "RefillRequest") вернет resultJSON.RefillRequest или null если ключ не находится в resultJSON.

  • 0
    Спасибо, мне тоже нравится ваше решение. Буду держать это в виду.
1

Нет необходимости выполнять эту функцию. Чтобы получить доступ к значению json, вы можете просто.

var settings = resultJSON.Log;
//or 
var settings = resultJSON['Log'];

Ещё вопросы

Сообщество Overcoder
Наверх
Меню