我有一个像这样的数据结构:
var someObject = {
'part1' : {
'name': 'Part 1',
'size': '20',
'qty' : '50'
},
'part2' : {
'name': 'Part 2',
'size': '15',
'qty' : '60'
},
'part3' : [
{
'name': 'Part 3A',
'size': '10',
'qty' : '20'
}, {
'name': 'Part 3B',
'size': '5',
'qty' : '20'
}, {
'name': 'Part 3C',
'size': '7.5',
'qty' : '20'
}
]
};
我想使用这些变量访问数据:
var part1name = "part1.name";
var part2quantity = "part2.qty";
var part3name1 = "part3[0].name";
part1name应该用someObject.part1.name
的值(即“第1部分”)填充。part2quantity填充60。
无论如何,可以使用纯JavaScript或JQuery来实现这一目标?
我只是根据已经拥有的一些类似代码制作的,它似乎可以工作:
Object.byString = function(o, s) {
s = s.replace(/\[(\w+)\]/g, '.$1'); // convert indexes to properties
s = s.replace(/^\./, ''); // strip a leading dot
var a = s.split('.');
for (var i = 0, n = a.length; i < n; ++i) {
var k = a[i];
if (k in o) {
o = o[k];
} else {
return;
}
}
return o;
}
用法::
Object.byString(someObj, 'part3[0].name');
编辑一些人已经注意到,如果传递的字符串最左边的索引与对象内正确嵌套的条目不对应,则此代码将引发错误。这是一个有效的问题,但是IMHO最好try / catch在调用时使用块来解决,而不是让此函数静默返回undefined无效索引。
我有以下数据结构来我的服务器通过Http调用 然后我有下面的实体类 不管怎样,我都无法让spring boot匹配json属性文本(这两个值总是空的)。。。这可行吗 我需要生成的最终JSON如下 所以基本上我需要把我的孩子信息附加到父母身上。 更新我能够通过使用自定义JsonDeserializer获得与父级相同的一个属性,如下所示 这只适用于一个属性集,每个类使用@JsonDeserialize
问题内容: 我有基于json的数据结构,其中包含嵌套对象。为了访问特定的数据元素,我一直将对对象属性的引用链接在一起。例如: 如果未定义b或bc,则将失败并显示错误。但是,我想获得一个值(如果存在的话),否则只是未定义。无需检查链中每个值是否存在的最佳方法是什么? 我想尽可能地保持这种方法,所以我不必添加大量的辅助方法,例如: 要么 我也想尝试避免使用try / catch构造,因为这不是错误,因
问题内容: 我一直在尝试搜索包含嵌套字段的文档。我创建了这样的嵌套映射: 我的搜索如下所示: 但是我收到此错误消息: 编辑 我仍然收到此错误。我正在通过Java执行此操作,因此这是我要创建的文档: 像这样创建索引: 我认为我可能对文档编制了错误的索引。 问题答案: TLDR:输入您的嵌套类型。 假设我们有一个普通类型,并且嵌套了另一个类型: 该行是分配给的嵌套查询所必需的,如下所示: 该行似乎仅在
问题内容: 我正在尝试创建返回对象值的函数,但也可以很好地处理嵌套对象。例如: 我想通过向函数提供字符串“ foo.bar”来访问obj.foo.bar的值。 谢谢! 问题答案: 考虑一下:
我从foursquare收到了一个json形式的响应。我尝试访问对象的某些部分,但没有成功。如何访问对象的地址?这是我试过的代码。 以下是json响应的一个示例: 完整的回应可以在这里找到
问题内容: 我正在寻找一种通过字符串值访问属性的好的解决方案,但是如果该属性不存在,则应该创建它。如果根结构已经定义了结构的某些部分,则属性不应被覆盖,而应合并。 例如,如果您有一个空对象,并且想要设置一个深层结构而不使用eval。例如 我写了一个切实可行的解决方案,但是我猜这是很糟糕的代码: 也可以作为jsfiddle使用:https ://jsfiddle.net/gvaLzqqf/4/ 但是