常见的数据格式化方式

前端一直被称为项目开发的食物链底层,页面出了问题,样式不好看,数据格式不对,展示形式不对等等,第一反应被@的大都是前端。最常见的问题就是,接口返回的数据格式往往和产品要求的不符合,这时我们就要按照产品需求文档和设计稿处理成他们需要的样子。

1.JSON格式数据展示

在表单操作中,复杂的表单字段接口端会处理成JSON字符串格式。在表格展示中,为了能够用户直观的查看JSON数据,我们要处理成格式化后的结构。

例如:

js 复制代码
数据返回格式如下
'{"title": "住址", "dataIndex": 'address',key: 'address'}'

但是当字段多的时候查看特别不方便,需要做如下处理

js 复制代码
console.log(JSON.stringify(  {
    "title": "住址",
    dataIndex: 'address',
    key: 'address',
  }, null, 4))
  // 打印结果如下
{
    "title": "住址",
    "dataIndex": "address",
    "key": "address"
}

原理:JSON.stringify语法

JSON.stringify(value[, replacer[, space]]) space可选,表示文本添加缩进、空格和换行符,如果 space 是一个数字,则返回值文本在每个级别缩进指定数目的空格。 所以根据space不同,我们可以处理成各种各样的展示形式。

js 复制代码
console.log(JSON.stringify({"title": "住址",dataIndex: 'address',key: 'address'}, null, "---"))
{
---"title": "住址",
---"dataIndex": "address",
---"key": "address"
}

console.log(JSON.stringify({"title": "住址",dataIndex: 'address',key: 'address'}, null, "\t"))
{
	"title": "住址",
	"dataIndex": "address",
	"key": "address"
}

console.log(JSON.stringify({"title": "住址",dataIndex: 'address',key: 'address'}, null, " "))
{
 "title": "住址",
 "dataIndex": "address",
 "key": "address"
}

插一个题外话,同样的项目如果不同后端开发可能对于同样的数据结构返回不同的数据格式,这个方法也能很好的处理 如:

js 复制代码
//有些人按照习惯的方式将树状结构的子结构写成children
{
    a: 1,
    children: [
        {b: 1}
    ]
}
//但是有些人就随心所欲惯了,非写成childList
{
    a: 1,
    childList: [
        {b: 1}
    ]
}

我们处理数据的时候得考虑将其处理成统一的格式

js 复制代码
JSON.stringify({
    a: 1,
    childList: [
        {b: 1}
    ]
}).replace("childList", "children")

2.使用<pre>标签

开发中一般textarea类型的表单经常返回如下格式数据

js 复制代码
"此例演示如何使用 pre 标签 \n对空行和 空格\n进行控制"

处理该类数据,直接在外层套一个pre标签

js 复制代码
  var a = "此例演示如何使用 pre 标签 \n对空行和 空格\n进行控制";
  <pre>{a}</pre>

3. React中使用dangerouslySetInnerHTML

开发中不乏来自第三方编辑器的数据,格式如下:

js 复制代码
<p>这是一段文本段落</p>
<br/>
<div>这是另一段</div>

处理该类数据,我们使用该属性

js 复制代码
var a = "<p>这是一段文本段落</p>
<br/>
<div>这是另一段</div>"

<div dangerouslySetInnerHTML={{__html: a}}></div>
相关推荐
JunjunZ4 分钟前
unibest框架开发uniapp项目:兼容小程序问题
前端·vue.js
lyc2333335 分钟前
鸿蒙Next应用启动框架AppStartup:流程管理与性能优化🚀
前端
Data_Adventure5 分钟前
Vue 3 作用域插槽:原理剖析与高级应用
前端·vue.js
Splendid9 分钟前
Geneformer:基于Transformer的基因表达预测深度学习模型
javascript·算法
EndingCoder10 分钟前
React Native 开发环境搭建(全平台详解)
javascript·react native·react.js·前端框架
curdcv_po14 分钟前
报错 /bin/sh: .../scrcpy-server: cannot execute binary file
前端
小公主14 分钟前
用原生 JavaScript 写了一个电影搜索网站,体验拉满🔥
前端·javascript·css
代码小学僧15 分钟前
通俗易懂:给前端开发者的 Docker 入门指南
前端·docker·容器
Moment17 分钟前
为什么我在 NextJs 项目中使用 cookie 存储 token 而不是使用 localstorage
前端·javascript·react.js
lyc23333317 分钟前
鸿蒙Next加解密算法框架入门:安全基石解析🔐
前端