在 JSON 对象中,如何在不知道键的情况下检索 JSON 对象中对象的值?

经典

在以下 API 响应中,我有一个 对象time_entries,每个对象都有一个 ID 作为键。

{"count":5,"results":[{"key":"time_entries","id":"1522040735"},{"key":"time_entries","id":"1522040395"},{"key":"time_entries","id":"1517855265"},{"key":"time_entries","id":"1517854385"},{"key":"time_entries","id":"1517853315"}],"time_entries":{"1522040735":{"created_at":"2020-06-22T13:54:54-07:00","updated_at":"2020-06-22T13:54:54-07:00","date_performed":"2020-06-22","time_in_minutes":75,"billable":true,"notes":"","rate_in_cents":25000,"cost_rate_in_cents":null,"currency":"USD","currency_symbol":"$","currency_base_unit":100,"user_can_edit":false,"approved":false,"taxable":false,"is_invoiced":true,"story_id":"569297425","workspace_id":"31689165","user_id":"13403745","active_submission_id":null,"recent_submission_id":null,"id":"1522040735"},"1522040395":{"created_at":"2020-06-22T13:54:42-07:00","updated_at":"2020-06-22T13:54:42-07:00","date_performed":"2020-06-22","time_in_minutes":90,"billable":true,"notes":"","rate_in_cents":25000,"cost_rate_in_cents":null,"currency":"USD","currency_symbol":"$","currency_base_unit":100,"user_can_edit":false,"approved":false,"taxable":false,"is_invoiced":true,"story_id":"569297345","workspace_id":"31689165","user_id":"13403745","active_submission_id":null,"recent_submission_id":null,"id":"1522040395"},"1517855265":{"created_at":"2020-06-19T10:32:50-07:00","updated_at":"2020-06-19T10:32:50-07:00","date_performed":"2020-06-19","time_in_minutes":60,"billable":true,"notes":"","rate_in_cents":25000,"cost_rate_in_cents":null,"currency":"USD","currency_symbol":"$","currency_base_unit":100,"user_can_edit":false,"approved":false,"taxable":false,"is_invoiced":true,"story_id":"568676695","workspace_id":"31689165","user_id":"13403745","active_submission_id":null,"recent_submission_id":null,"id":"1517855265"},"1517854385":{"created_at":"2020-06-19T10:32:12-07:00","updated_at":"2020-06-19T10:32:12-07:00","date_performed":"2020-06-19","time_in_minutes":120,"billable":true,"notes":"","rate_in_cents":25000,"cost_rate_in_cents":null,"currency":"USD","currency_symbol":"$","currency_base_unit":100,"user_can_edit":false,"approved":false,"taxable":false,"is_invoiced":true,"story_id":"568676755","workspace_id":"31689165","user_id":"13403745","active_submission_id":null,"recent_submission_id":null,"id":"1517854385"},"1517853315":{"created_at":"2020-06-19T10:31:40-07:00","updated_at":"2020-06-19T10:31:40-07:00","date_performed":"2020-06-19","time_in_minutes":180,"billable":true,"notes":"","rate_in_cents":25000,"cost_rate_in_cents":null,"currency":"USD","currency_symbol":"$","currency_base_unit":100,"user_can_edit":false,"approved":false,"taxable":false,"is_invoiced":true,"story_id":"568676765","workspace_id":"31689165","user_id":"13403745","active_submission_id":null,"recent_submission_id":null,"id":"1517853315"}},"meta":{"count":5,"page_count":1,"page_number":1,"page_size":20},"stories":{"569297425":{"title":"task5","description":"task5desc","updated_at":"2020-06-22T13:56:41-07:00","assignment_timestamped_at":"2020-06-22T13:56:41-07:00","created_at":"2020-06-22T13:54:08-07:00","due_date":null,"start_date":null,"story_type":"task","state":"started","position":99960000,"archived":false,"deleted_at":null,"sub_story_count":0,"percentage_complete":0,"priority":"normal","has_proofing_access":false,"ancestor_ids":[],"subtree_depth":0,"ancestry_depth":0,"time_trackable":true,"time_estimate_in_minutes":null,"logged_billable_time_in_minutes":75,"logged_nonbillable_time_in_minutes":0,"sub_stories_time_estimate_in_minutes":null,"sub_stories_billable_time_in_minutes":null,"weight":null,"budget_estimate_in_cents":null,"budget_used_in_cents":31250,"uninvoiced_balance_in_cents":0,"invoiced_balance_in_cents":31250,"sub_stories_budget_estimate_in_cents":null,"sub_stories_budget_used_in_cents":null,"fixed_fee":false,"billable":true,"workspace_id":"31689165","creator_id":"13403745","parent_id":null,"root_id":null,"id":"569297425"},"569297345":{"title":"task4","description":"task4desc","updated_at":"2020-06-22T13:56:41-07:00","assignment_timestamped_at":"2020-06-22T13:56:41-07:00","created_at":"2020-06-22T13:53:55-07:00","due_date":null,"start_date":null,"story_type":"task","state":"started","position":99970000,"archived":false,"deleted_at":null,"sub_story_count":0,"percentage_complete":0,"priority":"normal","has_proofing_access":false,"ancestor_ids":[],"subtree_depth":0,"ancestry_depth":0,"time_trackable":true,"time_estimate_in_minutes":null,"logged_billable_time_in_minutes":90,"logged_nonbillable_time_in_minutes":0,"sub_stories_time_estimate_in_minutes":null,"sub_stories_billable_time_in_minutes":null,"weight":null,"budget_estimate_in_cents":null,"budget_used_in_cents":37500,"uninvoiced_balance_in_cents":0,"invoiced_balance_in_cents":37500,"sub_stories_budget_estimate_in_cents":null,"sub_stories_budget_used_in_cents":null,"fixed_fee":false,"billable":true,"workspace_id":"31689165","creator_id":"13403745","parent_id":null,"root_id":null,"id":"569297345"},"568676695":{"title":"task1","description":"desc1","updated_at":"2020-06-22T13:56:40-07:00","assignment_timestamped_at":"2020-06-22T13:56:40-07:00","created_at":"2020-06-19T10:26:09-07:00","due_date":null,"start_date":"2020-06-19","story_type":"task","state":"completed","position":100000000,"archived":false,"deleted_at":null,"sub_story_count":0,"percentage_complete":100,"priority":"normal","has_proofing_access":false,"ancestor_ids":[],"subtree_depth":0,"ancestry_depth":0,"time_trackable":true,"time_estimate_in_minutes":120,"logged_billable_time_in_minutes":60,"logged_nonbillable_time_in_minutes":0,"sub_stories_time_estimate_in_minutes":null,"sub_stories_billable_time_in_minutes":null,"weight":null,"budget_estimate_in_cents":10000,"budget_used_in_cents":30000,"uninvoiced_balance_in_cents":0,"invoiced_balance_in_cents":30000,"sub_stories_budget_estimate_in_cents":null,"sub_stories_budget_used_in_cents":null,"fixed_fee":false,"billable":true,"workspace_id":"31689165","creator_id":"13403745","parent_id":null,"root_id":null,"id":"568676695"},"568676755":{"title":"task2","description":"desc2","updated_at":"2020-06-22T13:56:40-07:00","assignment_timestamped_at":"2020-06-22T13:56:40-07:00","created_at":"2020-06-19T10:26:27-07:00","due_date":null,"start_date":"2020-06-19","story_type":"task","state":"completed","position":99990000,"archived":false,"deleted_at":null,"sub_story_count":0,"percentage_complete":100,"priority":"normal","has_proofing_access":false,"ancestor_ids":[],"subtree_depth":0,"ancestry_depth":0,"time_trackable":true,"time_estimate_in_minutes":120,"logged_billable_time_in_minutes":120,"logged_nonbillable_time_in_minutes":0,"sub_stories_time_estimate_in_minutes":null,"sub_stories_billable_time_in_minutes":null,"weight":null,"budget_estimate_in_cents":20000,"budget_used_in_cents":50000,"uninvoiced_balance_in_cents":0,"invoiced_balance_in_cents":50000,"sub_stories_budget_estimate_in_cents":null,"sub_stories_budget_used_in_cents":null,"fixed_fee":false,"billable":true,"workspace_id":"31689165","creator_id":"13403745","parent_id":null,"root_id":null,"id":"568676755"},"568676765":{"title":"task3","description":"desc3","updated_at":"2020-06-22T13:56:40-07:00","assignment_timestamped_at":"2020-06-22T13:56:40-07:00","created_at":"2020-06-19T10:26:36-07:00","due_date":null,"start_date":"2020-06-19","story_type":"task","state":"completed","position":99980000,"archived":false,"deleted_at":null,"sub_story_count":0,"percentage_complete":100,"priority":"normal","has_proofing_access":false,"ancestor_ids":[],"subtree_depth":0,"ancestry_depth":0,"time_trackable":true,"time_estimate_in_minutes":180,"logged_billable_time_in_minutes":180,"logged_nonbillable_time_in_minutes":0,"sub_stories_time_estimate_in_minutes":null,"sub_stories_billable_time_in_minutes":null,"weight":null,"budget_estimate_in_cents":30000,"budget_used_in_cents":75000,"uninvoiced_balance_in_cents":0,"invoiced_balance_in_cents":75000,"sub_stories_budget_estimate_in_cents":null,"sub_stories_budget_used_in_cents":null,"fixed_fee":false,"billable":true,"workspace_id":"31689165","creator_id":"13403745","parent_id":null,"root_id":null,"id":"568676765"}}}

问题是,对于每个 API 调用,我不知道那个时间条目 ID 是什么。每次都会改变。

我想要做的是在每个时间条目对象中捕获特定键的字符串输出。

例如,对于time_in_minutes,在这种情况下我需要捕获的是:“75, 90, 60, 120, 180”

而且我还需要它采用这种格式,无论有多少条目——无论是五个条目还是二十个条目。

任何提示或建议将不胜感激。

保罗

让我们定义response保存 API 返回值,它what是您希望从每个time_entries对象中提取的属性

function extract(response, what){
    const parsed = (typeof(response)==='object')? response: JSON.parse(response); 
    return (Object
            .keys(parsed.time_entries)  // finds the keys
            .sort((a,b)=>(+b-a))        // sorts the keys in reverse order
            .map((k)=>(parsed.time_entries[k][what]))  // finds the data
            .filter((v)=>(v!==undefined)) // removes undefined data 
            .join(",")  // changes to CSV [75,90,60,...] -> '75,90,60,...'
            );
}

测试在 node.js

extract(response, 'time_in_minutes');
'75,90,60,120,180'

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在不知道键的情况下使用 javascript 从多级 JSON 中获取值

如何在不知道对象名称的情况下返回Json objects子对象?

如何在不知道我在 Python 中查找的对象名称的情况下解析 JSON 文件?

如何在不知道Ract Native中的键的情况下遍历json数组并打印值?

如何在不知道键的情况下基于键动态将嵌套的Json对象/数组转换为多个列表

在不知道任何键的情况下遍历整个JSON对象

Delphi-JSON对象-如何在不知道属性名称的情况下迭代所有属性?

如何在不知道结构的情况下在 C# 中使 JSON 对象脱轨

如何在不知道JSON值的情况下动态解析某些JSON?

如何在给定 Scala 中的字段列表(键 -> 值)的情况下构建 json 对象

如何在不知道VB.NET中数字键名称的情况下从JSON获取值

如何在不知道json键的情况下使用JsonReader从json读取值

如何在不知道键值的情况下在php中读取JSON数据

如何在不知道确切键的情况下在 Java 中的 JSON 字符串中屏蔽特定值

如何在不使用Java知道键的情况下解析JSON对象?

如何从 JSON 对象中检索多个值

在不知道 JSON 结构的情况下解析 Java 中的嵌套 JSON

如何在不知道匹配返回的 json 数据中的所有值的情况下从 .Net 核心中的 web api 调用创建模型?

替换JSON对象中的值

json对象中的空值

访问JSON对象中的值

如何从json对象中同时检索键和值?

如何从 JSON 对象的值数组中检索键?

如何检索给定键的json对象中的值?

当我不知道JSON对象名称时,如何在MVC控制器中获取JSON数据?

NodeJS在不知道名称的情况下获取JSON中的每个项目

Groovy:基于对象从 JSON 中检索值

从 JSON 对象数组中检索值

如何在 JSON 对象中更改对象的属性值