JavaScript中如何将JSON数据转换为指定格式的数组
问题解决方法
现有代码的逻辑存在无效操作:你定义的JsonData本身就是已经解析完成的JS对象数组,先调用JSON.stringify序列化再调用JSON.parse反序列化的操作没有任何实际作用,得到的BusArray和原始JsonData完全一致,存储的是对象类型数据,直接用alert输出对象时默认就会显示[object Object]。
你需要的是提取对象内的属性值组成数组,再按你需要的格式拼接字符串即可,实现代码如下:
// 原始数据 const JsonData = [{"id":1,"Bus_RegNo":"T 784 DHJ","Name":"Bus1"}]; // 提取第一个对象的所有属性值,生成目标数组 const BusArray = Object.values(JsonData[0]).map(String); // 按要求拼接输出格式 const outputStr = `{"${BusArray.join('","')}"}`; // 输出结果:{"1","T 784 DHJ","Bus1"} alert(outputStr);
补充说明
Object.values()方法会返回给定对象自身所有可枚举属性的值组成的数组,可直接将单个公交对象转换为属性值数组- 后面追加的
.map(String)是为了将数值类型的id转为字符串,匹配你需要的带引号的输出格式 - 如果你的
JsonData中包含多个公交对象,可通过map批量转换:
const JsonData = [ {"id":1,"Bus_RegNo":"T 784 DHJ","Name":"Bus1"}, {"id":2,"Bus_RegNo":"T 123 ABC","Name":"Bus2"} ]; // 批量转换得到二维数组 const BusArrayList = JsonData.map(item => Object.values(item).map(String)); // 输出第一个对象的格式化结果 alert(`{"${BusArrayList[0].join('","')}"}`);
内容的提问来源于stack exchange,提问作者Ecom Constantine
相关产品推荐
相关产品推荐

