JSJSON格式化详解

一、js格式化json字符串

在 JavaScript 编程中,处理 JSON 字符串是一个常见的任务。JSON 字符串通常是从后端服务器发送过来的,有可能存在格式问题。为了更直观地展示数据,我们需要对 JSON 字符串进行格式化。下面是一段格式化 JSON 的函数:

function formatJson(jsonStr) {
    var result = '';
    var level = 0;
    var i = 0;
    var j = 0;
    var inQuotationMarks = false;
    var currentChar = null;

    for (i = 0; i < jsonStr.length; i++) {    
        currentChar = jsonStr.charAt(i);

        switch (currentChar) {
            case '{':
            case '[':
                if (!inQuotationMarks) {
                    result += currentChar + '\n' + indent(level + 1);
                    level++;
                } else {
                    result += currentChar;
                }
                break;
            case '}':
            case ']':
                if (!inQuotationMarks) {
                    level--;
                    result += '\n' + indent(level) + currentChar;
                } else {
                    result += currentChar;
                }
                break;
            case ',':
                if (!inQuotationMarks) {
                    result += ',\n' + indent(level);
                } else {
                    result += currentChar;
                }
                break;
            case ':':
                if (!inQuotationMarks) {
                    result += ': ';
                } else {
                    result += currentChar;
                }
                break;
            case '"':
                if (i > 0 && jsonStr.charAt(i - 1) !== '\\') {
                    inQuotationMarks = !inQuotationMarks;
                }
                result += currentChar;
                break;
            default:
                result += currentChar;
                break;
        }
    }

    return result;
}

function indent(level) {
    var result = '';
    var i = 0;
    for (i = 0; i < level; i++) {
        result += '  ';
    }
    return result;
}

调用方式:

var jsonStr = '{"name":"john","age":23,"hobby":["basketball","music"],"address":{"city":"Beijing","country":"China"}}';
var formattedJsonStr = formatJson(jsonStr);
console.log(formattedJsonStr);

输出结果:

{
  "name": "john",
  "age": 23,
  "hobby": [
    "basketball",
    "music"
  ],
  "address": {
    "city": "Beijing",
    "country": "China"
  }
}

这段代码使用了一个栈来跟踪层级。当遇到左花括号或左中括号时,增加层级;当遇到右花括号或右中括号时,减小层级;当遇到逗号时,新起一行,并添加缩进。我们可以将这个函数放到我们的开发工具包中,格式化所有的 JSON 字符串,让开发调试更加方便。

二、json格式化显示js

在前端开发中,我们需要用 JavaScript 来操作一些动态数据,有时候需要将 JavaScript 对象格式转换为 JSON 格式,再传给后端接口。这个过程也需要我们将 JavaScript 对象格式化成易于阅读的格式。这个过程比较简单,只需要使用 JSON.stringify() 函数即可:

var obj = {
    name: "john",
    age: 23,
    hobby: ["basketball", "music"],
    address: {
        city: "Beijing",
        country: "China"
    }
};
var formattedJsonStr = JSON.stringify(obj, null, 4);
console.log(formattedJsonStr);

输出结果:

{
    "name": "john",
    "age": 23,
    "hobby": [
        "basketball",
        "music"
    ],
    "address": {
        "city": "Beijing",
        "country": "China"
    }
}

在代码中,JSON.stringify() 函数的第一个参数是要转换的 JavaScript 对象,第二个参数是一个函数,用于对转换后的 JSON 字符串进行格式化。由于我们需要缩进四个空格,因此传入了数字 4。如果不需要格式化,第二个参数可以传入 null。

三、js格式化

在 JavaScript 开发中,我们经常需要将一些复杂的数据类型转换为字符串进行传输或者存储。为了方便数据的阅读和编辑,我们需要将字符串格式化为易于阅读的形式。下面是一个格式化 JavaScript 对象的函数:

function formatObj(obj) {
    var result = '';
    var level = 0;

    if (Array.isArray(obj)) {
        result += '[';
        level++;
    } else {
        result += '{';
        level++;
    }

    var keys = Object.keys(obj);
    keys.sort();

    for (var i = 0; i < keys.length; i++) {
        var key = keys[i];
        var value = obj[key];
        if (typeof value === 'object') {
            if (Array.isArray(value)) {
                result += '\n' + indent(level) + key + ': [';
                level++;
            } else {
                result += '\n' + indent(level) + key + ': {';
                level++;
            }

            result += formatObj(value);

            level--;
            result += '\n' + indent(level) + '},';
        } else {
            result += '\n' + indent(level) + key + ': ' + value + ','
        }
    }

    if (result.endsWith(',')) {
        result = result.substring(0, result.length - 1)
    }

    if (Array.isArray(obj)) {
        result += '\n' + indent(level - 1) + ']';
    } else {
        result += '\n' + indent(level - 1) + '}';
    }

    return result;
}

function indent(level) {
    var result = '';
    for (var i = 0; i < level; i++) {
        result += '  ';
    }
    return result;
}

调用方式:

var obj = {
    name: 'john',
    age: 23,
    hobby: ['basketball', 'music'],
    address: {
        city: 'Beijing',
        country: 'China'
    }
};
var formattedStr = formatObj(obj);
console.log(formattedStr);

输出结果:

{
  "address": {
    "city": "Beijing",
    "country": "China"
  },
  "age": 23,
  "hobby": [
    "basketball",
    "music"
  ],
  "name": "john"
}

这段代码使用了递归的方式,循环遍历对象和数组的每个属性,并将其格式化成易于阅读的形式。同样也可以将这个函数放到开发工具包中,方便日常调试。

四、js格式化成钱数格式

在 Web 开发中,我们经常需要将浮点数格式化为货币形式。下面是一个格式化为人民币货币形式(例如 12345678.9 格式化成 12,345,678.90 元)的函数:

function formatMoney(num) {
    num = num.toString().replace(/\$|\,/g, '');

    if (isNaN(num)) {
        num = '0';
    }

    var sign = (num === (num = Math.abs(num)));
    num = Math.floor(num * 100 + 0.50000000001);
    var cents = num % 100;
    num = Math.floor(num / 100).toString();

    if (cents < 10) {
        cents = '0' + cents;
    }

    for (var i = 0; i < Math.floor((num.length - (i + 1)) / 3); i++) {
        num = num.substring(0, num.length - (4 * i + 3)) + ',' + num.substring(num.length - (4 * i + 3));
    }

    return (((sign) ? '' : '-') + '¥' + num + '.' + cents);
}

调用方式:

var num = 12345678.9;
var formattedMoney = formatMoney(num);
console.log(formattedMoney);

输出结果:

¥12,345,678.90

这个函数使用了一个正则表达式,将字符串中的非数字字符替换为空。接着将数值乘以 100 并四舍五入,然后格式化为货币形式。最后添加千位分隔符和小数点。同样可以将这个函数放到开发工具包中,方便在开发中调用。

原创文章,作者:ZPEZ,如若转载,请注明出处:https://www.506064.com/n/134567.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
ZPEZZPEZ
上一篇 2024-10-04 00:06
下一篇 2024-10-04 00:06

相关推荐

  • 神经网络代码详解

    神经网络作为一种人工智能技术,被广泛应用于语音识别、图像识别、自然语言处理等领域。而神经网络的模型编写,离不开代码。本文将从多个方面详细阐述神经网络模型编写的代码技术。 一、神经网…

    编程 2025-04-25
  • Linux sync详解

    一、sync概述 sync是Linux中一个非常重要的命令,它可以将文件系统缓存中的内容,强制写入磁盘中。在执行sync之前,所有的文件系统更新将不会立即写入磁盘,而是先缓存在内存…

    编程 2025-04-25
  • nginx与apache应用开发详解

    一、概述 nginx和apache都是常见的web服务器。nginx是一个高性能的反向代理web服务器,将负载均衡和缓存集成在了一起,可以动静分离。apache是一个可扩展的web…

    编程 2025-04-25
  • 详解eclipse设置

    一、安装与基础设置 1、下载eclipse并进行安装。 2、打开eclipse,选择对应的工作空间路径。 File -> Switch Workspace -> [选择…

    编程 2025-04-25
  • MPU6050工作原理详解

    一、什么是MPU6050 MPU6050是一种六轴惯性传感器,能够同时测量加速度和角速度。它由三个传感器组成:一个三轴加速度计和一个三轴陀螺仪。这个组合提供了非常精细的姿态解算,其…

    编程 2025-04-25
  • Python输入输出详解

    一、文件读写 Python中文件的读写操作是必不可少的基本技能之一。读写文件分别使用open()函数中的’r’和’w’参数,读取文件…

    编程 2025-04-25
  • Python安装OS库详解

    一、OS简介 OS库是Python标准库的一部分,它提供了跨平台的操作系统功能,使得Python可以进行文件操作、进程管理、环境变量读取等系统级操作。 OS库中包含了大量的文件和目…

    编程 2025-04-25
  • Java BigDecimal 精度详解

    一、基础概念 Java BigDecimal 是一个用于高精度计算的类。普通的 double 或 float 类型只能精确表示有限的数字,而对于需要高精度计算的场景,BigDeci…

    编程 2025-04-25
  • git config user.name的详解

    一、为什么要使用git config user.name? git是一个非常流行的分布式版本控制系统,很多程序员都会用到它。在使用git commit提交代码时,需要记录commi…

    编程 2025-04-25
  • Linux修改文件名命令详解

    在Linux系统中,修改文件名是一个很常见的操作。Linux提供了多种方式来修改文件名,这篇文章将介绍Linux修改文件名的详细操作。 一、mv命令 mv命令是Linux下的常用命…

    编程 2025-04-25

发表回复

登录后才能评论