常见的数据格式化方式

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

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>
相关推荐
Edward-tan1 小时前
零基础上手WebGIS+智慧校园实例(1)【html by js】
前端·javascript·html
子非鱼9211 小时前
【Promise】JS 异步之宏队列与微队列
javascript·promise·异步
前端郭德纲1 小时前
react-copy-to-clipboard: 一个简单的 React 用于复制文本到剪贴板的组件
前端·react.js·前端框架
咔咔库奇1 小时前
React核心概念与特点
前端·react.js·前端框架
郑小憨2 小时前
Node.js回调函数以及事件循环使用介绍(基础介绍 三)
开发语言·javascript·npm·node.js
鱼樱前端2 小时前
vue源码之数组重写了哪些方法为何需要重写
前端·javascript·vue.js
堕落年代2 小时前
React官网生成Recat项目的区别
前端·react.js·前端框架
y先森2 小时前
CSS3新增渐变(线性渐变、径向渐变、重复渐变)
前端·css·css3
发现你走远了3 小时前
『VUE』22. 组件传递数据props(详细图文注释)
前端·javascript·vue.js
星云code3 小时前
【JS学习】10. web API-BOM
前端·javascript·学习