如何从Key / Value JSON对象获取值

时间:2013-10-02 14:25:37

标签: javascript jquery json

目前正在开发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专家。

提前致谢! 此致

文斯

3 个答案:

答案 0 :(得分:2)

只需使用resultJSON.RefillRequest,即可获取RefillRequest属性

根据我的理解,如果你需要传递密钥,你可以使用这个

var settings = resultJSON["RefillRequest"];

答案 1 :(得分:1)

无需执行此功能。要访问json值,您可以。

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

答案 2 :(得分:1)

虽然Satpal的答案是正确的,但您可以使用它来检索任何键的字典:

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

因此,如果密钥不在mySuperFunction(resultJSON, "RefillRequest"),则调用resultJSON.RefillRequest将返回nullresultJSON