读写JSON作配置文件

简介: 个人不太喜欢XML,于是找了JSON来做配置,JSON虽然有很多引号,但这种key-value的形式,非常符合我的思维,就像是一个萝卜一个坑。最近在读写JSON文件,需要注意两个问题。 中文乱码 直接像读txt一样,读取JSON配置文件 //最初的写法 File.ReadAllText(jsonPath); //防止中文乱码 File.ReadAllText(jsonPath,Encoding.Default);    写入格式 将json转成字符串写入json文件时,发现没有任何换行、空格、Tab,特别不利于查看,尤其是当数据比较多、分级多较复杂的时候。

个人不太喜欢XML,于是找了JSON来做配置,JSON虽然有很多引号,但这种key-value的形式,非常符合我的思维,就像是一个萝卜一个坑。最近在读写JSON文件,需要注意两个问题。

中文乱码

直接像读txt一样,读取JSON配置文件

//最初的写法
File.ReadAllText(jsonPath);
//防止中文乱码
File.ReadAllText(jsonPath,Encoding.Default);

  

写入格式

将json转成字符串写入json文件时,发现没有任何换行、空格、Tab,特别不利于查看,尤其是当数据比较多、分级多较复杂的时候。

所以,在写入之前,应当作一下小小的处理,效果如下:

格式化JSON示例:

 

/// <summary>
/// 格式化JSON字符串
/// </summary>
/// <param name="str">输入字符串</param>
/// <returns>输出字符串</returns>
public static string FormatJsonStr(string str)
{
    JsonSerializer serializer = new JsonSerializer();
    TextReader tr = new StringReader(str);
    JsonTextReader jtr = new JsonTextReader(tr);
    object obj = serializer.Deserialize(jtr);
    if (obj != null)
    {
        StringWriter textWriter = new StringWriter();
        JsonTextWriter jsonWriter = new JsonTextWriter(textWriter)
        {
            Formatting = Formatting.Indented,
            Indentation = 4,
            IndentChar = ' '
        };
        serializer.Serialize(jsonWriter, obj);
        return textWriter.ToString();
    }
    else
    {
        return str;
    }
}

  

读写JSON示例:

/// <summary>
/// 读取JSON文件
/// </summary>
/// <param name="jsonPath">json文件路径</param>
/// <returns>json字符串</returns>
public static string ReadJsonString(string jsonPath)
{
    if (!File.Exists(jsonPath))
    {
        LogHelper.Error("配置文件不存在:"+ jsonPath);
        return string.Empty;
    }
    return File.ReadAllText(jsonPath,Encoding.Default);
}

/// <summary>
///读取JSON文件
/// </summary>
/// <param name="jsonPath">json文件路径</param>
/// <returns>JObject对象</returns>
public static JObject ReadJsonObj(string jsonPath)
{
    string json = ReadJsonString(jsonPath);
    JObject jsonObj = null;
    if (!string.IsNullOrEmpty(json))
    {
        jsonObj=(JObject)JsonConvert.DeserializeObject(json);
    }
    return jsonObj;
}

#region 写入JSON
/// <summary>
/// 写入JSON
/// </summary>
/// <returns></returns>
public static bool Write(string jsonStr,string jsonPath)
{
    try
    {
        System.IO.File.WriteAllText(jsonPath, jsonStr, Encoding.Default);
        return true;
    }
    catch (System.Exception ex)
    {
        LogHelper.Error("保存结果异常" + ex.Message + ex.StackTrace);
        return false;
    }

}
#endregion

  

目录
相关文章
|
14天前
|
前端开发
【专栏】在前端开发中,package.json 文件是项目的重要配置文件,其中包含了许多与项目相关的信息和设置
【4月更文挑战第29天】`package.json`的`proxy`字段用于配置开发环境中的代理服务器,解决跨域问题并模拟后端响应。它是字符串类型,值为代理服务器地址。主要应用场景包括前端跨域请求和本地调试。配置时在`package.json`顶层添加`proxy`字段,如`"proxy": "http://localhost:8080"`。该配置仅在开发环境中生效,生产环境需另寻解决方案。
|
2月前
|
JSON 小程序 开发工具
【微信小程序】--JSON 配置文件作用(三)
【微信小程序】--JSON 配置文件作用(三)
|
2月前
|
存储 JSON JavaScript
Python中读写(解析)JSON文件的深入探究
Python中读写(解析)JSON文件的深入探究
50 0
|
7月前
|
JSON Go 数据格式
Golang 语言怎么高效读写 JSON 字符串?
Golang 语言怎么高效读写 JSON 字符串?
45 0
|
9月前
|
JSON 关系型数据库 MySQL
Python--json配置文件
Python--json配置文件
85 0
|
11月前
|
存储 XML JSON
Android操作配置文件封装类,使用json序列化的方式实现
Android操作配置文件封装类,使用json序列化的方式实现
|
JavaScript 前端开发
TypeScript:实践入门和tsconfig.json配置文件
TypeScript:实践入门和tsconfig.json配置文件
79 0
TS中tsconfig.json配置文件的详细配置
TS中tsconfig.json配置文件的详细配置
50 0
|
JavaScript
学习TypeScript15(tsconfig.json配置文件)
学习TypeScript15(tsconfig.json配置文件)
59 0
|
JSON JavaScript 数据格式
nodejs 异常退出解决&读取Json配置文件
nodejs 异常退出解决&读取Json配置文件
103 0