zoukankan      html  css  js  c++  java
  • C# 格式化 json 字符串

    将以下 压缩的 json 字符串格式化:

    [{"date":"2016-05-02","name":"王小虎","address":"上海市普陀区金沙江路 1518 弄"},{"date":"2016-05-03","name":"王小虎","address":"上海市普陀区金沙江路 1519 弄"},{"date":"2016-05-04","name":"王小虎","address":"上海市普陀区金沙江路 1520 弄"},{"date":"2016-05-05","name":"王小虎","address":"上海市普陀区金沙江路 1521 弄"}]
    

    方法一

    最简单的就是引用 Newtonsoft.Json 可以设置格式化的,只需要一句话即可。

    在 项目 --> 管理 NuGet 程序包中,搜索 json 安装即可。

    JsonTextWriter jsonWriter = new JsonTextWriter(textWriter)
    {
        Formatting = Formatting.Indented,//格式化缩进
        Indentation = 4,  //缩进四个字符
        IndentChar = ' '  //缩进的字符是空格
    };
    

    但是这样有一点不好的就是 : 我只是想格式化一下 json 字符串这个功能,不想使用几百k的dll文件。

    那就使用下面的方法二:


    方法二

    // 将序列化之后的 json 字符串进行格式化
    public static string JsonFormat(string json)
    {
        int level = 0;
        var jsonArr = json.ToArray();
        StringBuilder jsonStr = new StringBuilder();
        string _nt = "
    ";
    
        for (int i = 0; i < json.Length; i++)
        {
            char c = jsonArr[i];
            if (level > 0 && '
    ' == jsonStr.ToString().ToArray()[jsonStr.Length - 1])
            {
                jsonStr.Append(TreeLevel(level));
            }
            switch (c)
            {
                case '[':
                    jsonStr.Append(c + _nt);
                    level++;
                    break;
                case ',':
                    jsonStr.Append(c + _nt);
                    break;
                case ':':
                    jsonStr.Append(c + " ");
                    break;
                case ']':
                    level--;
                    jsonStr.Append(_nt);
                    jsonStr.Append(TreeLevel(level));
                    jsonStr.Append(c);
                    break;
                case '{':
                    jsonStr.Append(c + _nt);
                    level++;
                    break;
                case '}':
                    level--;
                    jsonStr.Append(_nt);
                    jsonStr.Append(TreeLevel(level));
                    jsonStr.Append(c);
                    break;
                default:
                    jsonStr.Append(c);
                    break;
            }
        }
        return jsonStr.ToString();
    }
    
    // 设置缩进
    private static string TreeLevel(int level)
    {
        string leaf = string.Empty;
        for (int t = 0; t < level; t++)
        {
            leaf += "    ";
        }
        return leaf;
        }
    


    如果有错误的地方,还望各位多多指点
    写个博客,来记录自己成长的一些经历,或许也能顺便帮助他人。
  • 相关阅读:
    【Spring Boot】关于上传文件例子的剖析
    GIT初始学习记录
    Java代码混淆工具ProGuard
    Kafka 概念、单机搭建与使用
    流网络分析系统-SNAS
    【Spring Boot】使用JDBC 获取相关的数据
    二叉树【按层打印、序列化、反序列化】
    跨域共享cookie
    启动kafka集群,关闭kafka集群脚本
    kafka-consumer.properties
  • 原文地址:https://www.cnblogs.com/Katakana/p/14268170.html
Copyright © 2011-2022 走看看