当前位置: 首页 > 知识库问答 >
问题:

如何检查并仅检索JSON

凤衡
2023-03-14

我收到以下JSON作为响应

{
                "user_details": [
                {
                        "Name": "Mark"
                },
                {
                        "Age": "35"
                },
                {
                        "Gender": "Male"
                },
                {
                        "Country": "US"
                }]
}

我正在解析这个JSON,如下所示

 var ajaxresponse = response.user_details;
        if (ajaxresponse.length > 0)
        {
                var Name = ajaxresponse[0].Name;
                var Age = ajaxresponse[1].Age;
                var Gender = ajaxresponse[2].Gender;
                var Country = ajaxresponse[3].Country;
                console.log(Name);
        }

这很好用。

我的问题是,如果JSON中缺少任何一个键,例如“名称”丢失,它就会断裂,我将无法定义

是否可以检查是否存在,然后重试?

https://jsfiddle.net/o2gxgz9r/9078/

关于我修改了json的答案

{
                "user_details": [
                {
                     "Name": "Mark",
                        "Age": "35",
                        "Gender": "Male",
                        "Country": "US"
                        }
              ]
        }

但是他自己的财产不起作用了?

请看这把小提琴

https://jsfiddle.net/o2gxgz9r/9085/

共有3个答案

鞠通
2023-03-14

让它更通用一点尝试这样的方法,它将迭代每个项目的user\u详细信息数组设置属性。

var ajaxresponse = response.user_details;
var user_details = ajaxresponse.reduce(function(details, detail){
    // details is the object we'll populate and will get assigned to user_details
    // detail is the current user detail object - Name/Age/Gender/Country

    // get property name for this "detail"
    var propertyName = Object.getOwnPropertyNames(detail)[0];

    // set the property and value for the current detail object
    details[propertyName] = detail[propertyName];

    // return the updated details object for the next iteration
    return details;
}, {});

console.log(user_details.Name);

这增加了一个额外的好处,即结果集中的任何新属性都将被自动处理。

丌官高远
2023-03-14

使用javascript的hasOwnProperty函数,

if(json_object.hasOwnProperty('name')){
//do struff
}

这儿呢

if (ajaxresponse.length > 0)
    {
        if(ajaxresponse.hasOwnProperty("Name"))
        {
            var Name = ajaxresponse[0].Name;
            var Age = ajaxresponse[1].Age;
            var Gender = ajaxresponse[2].Gender;
            var Country = ajaxresponse[3].Country;
            console.log(Name);
       }
    }
程鸿畅
2023-03-14

首先,这是一种错误的方式来发送数据作为来自任何来源的响应。

理想的方式应该是一个对象映射或向量,如下所示:

user_details: {
   name: "Mark",
   age: 35,
   gender: "male",
   country: "USA"
}

第二,如果您想要获得数据结构的解决方案,那么必须实际遍历每个项的数组,并查看其上是否存在属性。

var arr = ajaxResponse;

var name,age,country,age;

arr.forEach(function(item){
    if(item.hasOwnProperty('name')){
        name = item.name
    }
    //similarly for other objects in the array
));
 类似资料:
  • 是否有一种方法可以使我在从索引中检索时,只获得文档的_source中的数据&而不是任何其他元数据,如_index、_type、_id和_score?

  • 我正在使用Flatter desktop项目,我想检索一些双值,但当继续将某些字段作为空字段并尝试检索数据时,我遇到了一个错误,无法填充所有文本字段。如何将这些TextField检查为空字段并检索空值。 错误:-════════ 用手势捕捉异常═══════════════════════════════════════════ 处理手势时引发以下FormatException:无效的double

  • 问题内容: 这是我的简单表格: 这是我的Express.js /Node.js代码: 我试过或或,等等。它们都不起作用。他们都回来了。 当我更改为Get呼叫时,它可以工作,所以..有什么想法吗? 问题答案: 事情已经改变了再次启动 快速4.16.0 ,您现在可以使用与就像在 快车3.0 。 从 Express 4.0到4.15,* 这是不同的: * 然后: 其余的就像在 Express 3.0中一

  • 问题内容: 我正在为下面的用例设计Cassandra列族模式。.我不确定为下面的用例设计cassandra列族的最佳方法是什么?我将为此使用CQL Datastax Java驱动程序。 以下是我的用例和我现在设计的示例架构- 现在我将从上表中看到的是这样的- 每当我的应用程序运行时,我都会第一次要求上表中的所有内容。这意味着要给我上表中的所有内容。 然后每隔5或10分钟,我的后台线程就会检查该表,

  • 类似Bigtable的数据库存储按其键排序的行。 Cassandra使用分区和聚类键的结合来保持数据的分布和排序;但是,您只能通过使用分区键来选择行! 用于上述查询的Cassandra存储层的可视化。

  • 问题内容: 有谁知道从HttpServletRequest对象仅获取POST参数的方法吗? IE,PHP具有$ _POST超全局变量,并且Perl的CGI.pm仅在HTTP方法为POST(默认情况下)时才检索POST参数。 HttpServletRequest.getParameter(String)将包括 得到 URL参数,即使HTTP方法是POST。 问题答案: 我猜一种方法可能是手动解析并检