在TypeScript/Angular中提取父JSON对象指定属性生成子数组
问题
我有一个包含如下数据的JSON数组对象:
[ { "BEGIN_TIME": "24 Feb 2023 13:36", "END_TIME": "24 Feb 2023 13:37", ... }, { "BEGIN_TIME": "24 Feb 2023 13:37", "END_TIME": "24 Feb 2023 13:38", ... }, { "BEGIN_TIME": "24 Feb 2023 13:38", "END_TIME": "24 Feb 2023 13:39", ... } ]
我想要提取其中所有END_TIME属性的值,生成一个子数组,最终结果如下:
["24 Feb 2023 13:37","24 Feb 2023 13:38","24 Feb 2023 13:39"]
请问该如何实现?
解决方案
Python
假设已将JSON字符串解析为列表对象,用列表推导式直接提取:
import json # 解析JSON字符串为列表 parent_json = json.loads('你的JSON原始字符串') # 提取所有END_TIME值 child_array = [item["END_TIME"] for item in parent_json]
JavaScript
若已将JSON转为数组对象,使用map()方法快速生成目标数组:
// 假设parentJson是解析后的数组 const childArray = parentJson.map(item => item.END_TIME);
Java
结合Jackson库和Stream API实现提取:
import com.fasterxml.jackson.databind.ObjectMapper; import java.util.List; import java.util.stream.Collectors; public class ExtractEndTime { public static void main(String[] args) throws Exception { String jsonStr = "你的JSON原始字符串"; ObjectMapper mapper = new ObjectMapper(); // 解析为实体类列表 List<TimeData> dataList = mapper.readValue(jsonStr, mapper.getTypeFactory().constructCollectionType(List.class, TimeData.class)); // 提取END_TIME值 List<String> childArray = dataList.stream() .map(TimeData::getEND_TIME) .collect(Collectors.toList()); } } // 定义对应实体类 class TimeData { private String BEGIN_TIME; private String END_TIME; // 必须提供getter方法 public String getEND_TIME() { return END_TIME; } // 可选:setter方法 public void setEND_TIME(String END_TIME) { this.END_TIME = END_TIME; } }
PHP
使用array_column()函数直接提取指定键的值:
// 解析JSON为关联数组 $parentJson = json_decode('你的JSON原始字符串', true); // 提取所有END_TIME值 $childArray = array_column($parentJson, 'END_TIME');
内容的提问来源于stack exchange,提问作者Vic VKh
相关产品推荐
相关产品推荐

