2013-10-02 3 views
0

В настоящее время работает над приложением asp.net mvc 4.Как получить значения из объекта Key/Value JSON

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

Внутри View, я следующее:

<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.

Заранее благодарен! Искренне

Vince

+0

Почему бы просто не получить доступ к нему, используя точечные обозначения или квадратные скобки? –

+0

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

ответ

2

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

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

var settings = resultJSON["RefillRequest"]; 
+0

Спасибо ... вы не представляете, насколько сложным я смотрел на это. – Vlince

1

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

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

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

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

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

+0

Спасибо, мне нравится ваше решение. Будет держать это в разуме. – Vlince

Смежные вопросы