繁体   English   中英

从 JSON 字符串中获取特定值

[英]Get specific value from JSON string

我试图从我的 json 字符串中获取一个简单的值。 似乎比我想象的要难。 例如,我如何获得以下 JSON 中第一个 ModuleAction 对象的“名称”(第一个数组称为“数据”):

[
   {
      "ModuleController":{
         "id":"3"
      },
      "ModuleActionModuleController":[
         {
            "id":"4",
            "module_action_id":"1",
            "module_controller_id":"3",
            "ModuleAction":{
               "id":"1",
               "name":"Overzicht",
               "action":"index"
            }
         },
         {
            "id":"5",
            "module_action_id":"2",
            "module_controller_id":"3",
            "ModuleAction":{
               "id":"2",
               "name":"Detail",
               "action":"view"
            }
         }
      ]
   }
]

这是我最好的尝试:

data[0].ModuleActionModuleController[0].id

但我有错误:

add:93 Uncaught TypeError: Cannot read property '0' of undefined
    at Object.success (add:93)
    at j (jquery-2.1.0.min.js:2)
    at Object.fireWith [as resolveWith] (jquery-2.1.0.min.js:2)
    at x (jquery-2.1.0.min.js:4)
    at XMLHttpRequest.<anonymous> (jquery-2.1.0.min.js:4)

知道我做错了什么吗? :)

编辑

这是返回数据 JSON 字符串的 ajax 函数:

$(function() {
    $('#PageModuleId').on('change', function(){
        var formData = $('#PageAddForm').serialize();

        // POST to server

        $.ajax({
            type: 'POST',
            url: '<?php echo $this->here; ?>',
            dataType: 'text',
            data: formData,
            success: function(data){
                console.log(data[0].ModuleActionModuleController[0].ModuleAction.name);
            }
        });
    });
});

例如,如何获得以下 JSON 中第一个 ModuleAction 对象的“名称”?

在我看来,您只是缺少下一个子元素: ModuleActionModuleController.ModuleAction.name

 $(document).ready(function() { var obj = jQuery.parseJSON( '{"ModuleController":{"id":"3"},"ModuleActionModuleController":[{"id":"4","module_action_id":"1","module_controller_id":"3","ModuleAction":{"id":"1","name":"Overzicht","action":"index"}},{"id":"5","module_action_id":"2","module_controller_id":"3","ModuleAction":{"id":"2","name":"Detail","action":"view"}}]}' ); //alert( obj.ModuleActionModuleController[0].ModuleAction.name ); document.body.innerHTML = obj.ModuleActionModuleController[0].ModuleAction.name; });
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

这对我有用:

 var JSON = { "data": [ { "ModuleController":{ "id":"3" }, "ModuleActionModuleController":[ { "id":"4", "module_action_id":"1", "module_controller_id":"3", "ModuleAction":{ "id":"1", "name":"Overzicht", "action":"index" } }, { "id":"5", "module_action_id":"2", "module_controller_id":"3", "ModuleAction":{ "id":"2", "name":"Detail", "action":"view" } } ] } ] }; alert(JSON.data[0].ModuleActionModuleController[0].ModuleAction.id);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM