我收到以下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/
让它更通用一点尝试这样的方法,它将迭代每个项目的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);
这增加了一个额外的好处,即结果集中的任何新属性都将被自动处理。
使用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);
}
}
首先,这是一种错误的方式来发送数据作为来自任何来源的响应。
理想的方式应该是一个对象映射或向量,如下所示:
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中一
问题内容: 有谁知道从HttpServletRequest对象仅获取POST参数的方法吗? IE,PHP具有$ _POST超全局变量,并且Perl的CGI.pm仅在HTTP方法为POST(默认情况下)时才检索POST参数。 HttpServletRequest.getParameter(String)将包括 得到 URL参数,即使HTTP方法是POST。 问题答案: 我猜一种方法可能是手动解析并检
问题内容: 我正在为下面的用例设计Cassandra列族模式。.我不确定为下面的用例设计cassandra列族的最佳方法是什么?我将为此使用CQL Datastax Java驱动程序。 以下是我的用例和我现在设计的示例架构- 现在我将从上表中看到的是这样的- 每当我的应用程序运行时,我都会第一次要求上表中的所有内容。这意味着要给我上表中的所有内容。 然后每隔5或10分钟,我的后台线程就会检查该表,
类似Bigtable的数据库存储按其键排序的行。 Cassandra使用分区和聚类键的结合来保持数据的分布和排序;但是,您只能通过使用分区键来选择行! 用于上述查询的Cassandra存储层的可视化。