常见的数据格式化方式

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

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>
相关推荐
子兮曰6 小时前
async/await高级模式:async迭代器、错误边界与并发控制
前端·javascript·github
恋猫de小郭6 小时前
2026 Flutter VS React Native ,同时在 AI 时代 VS Native 开发,你没见过的版本
android·前端·flutter
GIS之路8 小时前
ArcGIS Pro 中的 Notebooks 入门
前端
IT_陈寒10 小时前
React状态管理终极对决:Redux vs Context API谁更胜一筹?
前端·人工智能·后端
Kagol11 小时前
TinyVue 支持 Skills 啦!现在你可以让 AI 使用 TinyVue 组件搭建项目
前端·agent·ai编程
柳杉11 小时前
从零打造 AI 全球趋势监测大屏
前端·javascript·aigc
simple_lau11 小时前
Cursor配置MasterGo MCP:一键读取设计稿生成高还原度前端代码
前端·javascript·vue.js
睡不着先生11 小时前
如何设计一个真正可扩展的表单生成器?
前端·javascript·vue.js
天蓝色的鱼鱼11 小时前
模块化与组件化:90%的前端开发者都没搞懂的本质区别
前端·架构·代码规范
明君8799711 小时前
Flutter 如何给图片添加多行文字水印
前端·flutter