使用唯一的命名子数组访问 JSON 值



我想根据子数组中的时间值对 JSON 数组进行排序,其中子数组的键名是唯一命名的。

我正在寻找访问 Products 中每个元素的键、值update_time的方法,以便我可以在排序脚本中使用该值。

我尝试对数组进行排序,但无法确定如何访问子数组的键和值

预期的行为应该是每个unique_keyname_#元素都可用于排序,并在 JavaScript 中排序以供进一步处理。最终,最新的unique_keyname_#作为列表中的第一个元素,基于 update_time 键。

var obj = {
"company": {
"department_1": {
"Products": {
"unique_keyname_1": {
"product_owner": "co-worker-1",
"update_time": "unix_timestamp_1"
},
"unique_keyname_5": {
"product_owner": "co-worker-4",
"update_time": "unix_timestamp_45"
},
"unique_keyname_8": {
"product_owner": "co-worker-2",
"update_time": "unix_timestamp_5"
}
}
},
"department_2": {
"Products": {
"unique_keyname_3": {
"product_owner": "co-worker-1",
"update_time": "unix_timestamp_21"
},
"unique_keyname_6": {
"product_owner": "co-worker-2",
"update_time": "unix_timestamp_7"
},
"unique_keyname_4": {
"product_owner": "co-worker-3",
"update_time": "unix_timestamp_75"
}
}
}
}
}

我通过用 python 编写一个中间脚本来解决这个问题,该脚本使 API 响应成为有效的数组。从那里对数据进行排序相当容易。

感谢您的回复,确认数据本身以不适当的格式交付给我!

问候

在您的示例中,没有数组。 无论如何,在Javascript中,您可以使用如下.访问节点:

obj.company.department_1.Products.unique_keyname_1

或者使用[],让您更自由地使用服装场

obj["company"]["department_1"]["Products"]["unique_keyname_1"]
// can also be more dynamic as:
obj["company"]["department_"+ department_counter]["Products"]["unique_keyname_" + keyname_counter]

您是否有可能更改 JSON 的结构? 使其更易于管理?

如果是这样,我会推荐以下结构:

var products = [
{
department: 'SomeDepartment',
productName: 'Something',
productOwner: 'Someone',
update_time: 'Sometime'
}
]

然后,您可以使用Array.sort()轻松地对数组进行排序 对于排序主题,请使用以下内容:按字符串属性值对对象数组进行排序

最新更新