当前位置:首页 » 《休闲阅读》 » 正文

vue3中前端处理不同数据结构的JSON

7 人参与  2024年04月05日 11:20  分类 : 《休闲阅读》  评论

点击全文阅读


        有时候,后端返回的JSON数据格式,是前端不需要的格式类型,这时,要么让后端修改,你要什么格式,那么让后端大哥哥给你返回什么格式。但是有时候不尽人意,后端大哥哥让你自己转换,此时就甩给前端了,只能在前端自己处理了。

目录

1.对后端数据的字段值/字段进行操作

2.处理多层级的数据结构

3.对JSON的字段进行排序 

4.实际案例


1.对后端数据的字段值/字段进行操作

后端的JSON格式:

//后端返回的数据格式var data = ref([{id: '00111322',name: 'zs01',age: 18},{id: '00035565644',name: 'ls02',age: 20}])

1.对字段的值进行更改

//返回的格式var data1 = data.value.map(res => {return {...res, //...使用es6语法,表示每一个对象,这里指的就是 {id: '00111322',name: 'zs01',age: 18}id: Number(res.id), //把字符串转换数字类型age: res.age + 1, //给每一个人加一岁name: res.name.substring(0, 2) //把name的值截取2位}})console.log(...data1) //...表示返回每一个元素

效果 

2.对字段进行操作

//返回的格式var data1 = data.value.map(res => {return {...res, //...使用es6语法,表示每一个对象,这里指的就是 {id: '00111322',name: 'zs01',age: 18}id: Number(res.id), //把字符串转换数字类型age: res.age + 1, //给每一个人加一岁name1: res.name.substring(0, 2), //把name的值截取2位,并且需要name1字段mark:res.id+res.name}})console.log(...data1) //...表示返回每一个元素

效果 

2.处理多层级的数据结构

后端的JSON格式:

//后端返回的数据格式var data = ref([{title: '一号楼',key: '100',children: [{title: '一单元',key: '110',children: [{title: '房间1',key: '111'},{title: '房间2',key: '112'}]}]}])

1.修改字段操作

//把title和key,分别改成id和name,一一对应起来,返回的格式 ,使用递归的方式function formatData(data1) {data1.forEach(res => {res.id = res.key;res.name = res.title;delete res.key;delete res.title;if (res.children) {formatData(res.children)}})}formatData(data.value) //调用console.log(...data.value) //...表示返回每一个元素console.log(JSON.stringify(data.value)) //返回字符串

效果

2.修改字段的值操作

//在最后一个字段title中,把前面的数据加上function formatData(data1, text) {data1.forEach(res => {if (!res.children) {res.title = text + res.title}if (res.children) {text += res.title;formatData(res.children, text)}})}formatData(data.value, '') //调用console.log(...data.value) //...表示返回每一个元素console.log(JSON.stringify(data.value)) //返回字符串

效果

3.对JSON的字段进行排序 

后端JSON数据格式:

//后端返回的数据格式var data = ref([{title: '一号楼',key: '100',children: [{title: '一单元',key: '110',children: [{title: '房间1',key: '111'},{title: '房间2',key: '112'}]}]}, {title: '二号楼',key: '200',children: [{title: '二单元',key: '210',children: [{title: '房间1',key: '211'},{title: '房间2',key: '212'}]}]}])

根据key的值排序

//根据根据key的值排序const compare = p => (m, n) => n[p] - m[p]; //简写排序,可以参考JavaScript中sort() 方法   //m[p] - n[p]升序    n[p] - m[p] 降序function formatData(data1, sortField) { //key:需要排序的字段data1.sort(compare(sortField));data1.forEach(res => {if (!res.children) {return;} else {formatData(res.children, sortField);}});}formatData(data.value, 'key') //调用,根据key的值排序console.log(...data.value) //...表示返回每一个元素console.log(JSON.stringify(data.value)) //返回字符串

效果,降序排列

4.实际案例

1.在使用uCharts时,经常需要进行数据转换

2.把res转成res1格式,因为res1是需要的

3.定义 res

let res = ref([{"name": "的方式是大多数","value": 6},{"name": "yqwuwiyvui","value": 3},{"name": "sdsfsdf","value": 2},{"name": "wewerw","value": 6}])

4.定义res1和res1s,因为res1s是res1中series的值

let res1 = ref({categories: [],series: []})let res1s = ref({name: "",data: []})

5.转换

res.value.forEach((va) => {res1.value.categories.push(va.name)res1s.value.data.push(va.value)})res1s.value.name = "目标值"res1.value.series.push(res1s.value)chartData.value = res1.value

6.效果

上面的方式可以实现,没有问题,应该还有别的方式也行。

来源:vue3中前端处理不同数据结构的JSON_vue解析json-CSDN博客


点击全文阅读


本文链接:http://zhangshiyu.com/post/90699.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 全书免费雾色靡靡倪雾裴淮聿_雾色靡靡倪雾裴淮聿全书免费
  • 新章速递如果你也爱我是什么小说(厉寒霆江映春)完本阅读无广告(如果你也爱我)
  • 完结文犹若清风梦了云高质量好文列表_完结文犹若清风梦了云高质量好文(晏临渊叶知薇谢执玉)
  • 医生老婆转行杀猪后,我离婚了一口气看完_小说后续在线阅读_无删减免费完结_
  • 因为买了二斤牛肉,我被儿媳逐出家门章节目录_宋川林淼养老完结爽文_小说后续在线阅读_无删减免费完结_
  • 如冷风吹凉月色(许栀夏盛南靳)全书免费_(许栀夏盛南靳)如冷风吹凉月色后续(许栀夏盛南靳)
  • 心动禁令小说(周斐任译)小说结尾+隐藏篇章(心动禁令)畅享阅读
  • 傲娇总裁低调宠小说(傲娇总裁低调宠)(丁千凝肖楚航)完整章节列表_笔趣阁
  • 终是庄周梦了蝶高口碑(南语沈聿珩乔清意)全书免费_(南语沈聿珩乔清意)终是庄周梦了蝶高口碑后续(南语沈聿珩乔清意)
  • 疯批小叔认错白月光,清醒的我杀疯了一口气完结_江寒小叔江南高分神作_小说后续在线阅读_无删减免费完结_
  • 重生未婚妻与我退婚后,傻眼了全文阅读_黎父沈旭沈浪隐藏剧情_小说后续在线阅读_无删减免费完结_
  • 在线阅读(重生八零,娇软美人把糙汉拿下了)温寒烟田政雄:结局+番外看点十足全文+后续

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1