嵌套 JSON 响应 TypeError

Posted

技术标签:

【中文标题】嵌套 JSON 响应 TypeError【英文标题】:Nested JSON response TypeError 【发布时间】:2018-08-02 17:19:23 【问题描述】:

我有一个 JSON 响应,我无法弄清楚。这是我目前收到的回复。

这是我的 ajax 脚本:

<script>
 $(document).on('click', '#pullDetails', function() 
         $.ajax(
            type:'POST',
            url: '/carrier/claims/pullDetails',
            data: 
                num: $('input[name=proNumber]').val(),
                _token: $('input[name=_token]').val(),
            dataType: 'json',
            success: function(data) 
                if(data.details != undefined) 
                        console.log('success');
                        console.log(data.details.SearchResults[0].Shipment.Origin.Name); //result: ATLAS INTL
                        $('#carrierReturnData').html(data.details.SearchResults[0].Shipment.Origin.Name);
                    else
                        console.log('failed');
                        console.log(data);
                        console.log(data.details.SearchResults.SearchItem); 
                    
            ,
            error: function(data) 
                console.log('error');
                console.log(data);
            
        );
    );
</script>

现在我的问题是如何从“SearchItem”行(在响应 json 的第一行)获取特定数据?

目前我得到以下信息:TypeError: data.details.SearchResults 未定义,但 data.details 被识别为我的控制台日志“成功”。

【问题讨论】:

【参考方案1】:

对详细信息进行 JSON.parse,然后尝试记录 SearchResults

var results = JSON.parse(data.details);
console.log(results.SearchResults.SearchItem);

【讨论】:

具体返回成功(作为第一部分的一部分)然后未定义。但是(我将在上面编辑我的问题以包含图像),如果我删除 .SearchItem 并将其保留为 results.SearchResults,我会返回一个数组。给我一点时间…… 我添加了图片来展示控制台返回的样子。 使用您上面的建议,我编辑为这样工作:results.SearchResults[0].SearchItem.

以上是关于嵌套 JSON 响应 TypeError的主要内容,如果未能解决你的问题,请参考以下文章

想要来自休眠 json 响应的嵌套 json 格式

嵌套 JSON 响应 TypeError

对熊猫数据框的深度嵌套 JSON 响应

检查嵌套 json 响应的值

从Firebase响应嵌套JSON对象获取键/值对

JSON响应中的Ember嵌套数据