读写JSON作配置文件

个人不太喜欢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

  

时间: 2024-09-29 18:34:34

读写JSON作配置文件的相关文章

js读写json文件实例代码

 本节为大家介绍下js如何读写json文件,代码很简练 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 function funSave() { var id = $('#testText1')[0].value; var name = $('#testText2')[0].value; var str = '{mydata:[' +

《Python Cookbook(第3版)中文版》——6.2 读写JSON数据

6.2 读写JSON数据 6.2.1 问题 我们想读写以JSON(JavaScript Object Notation)格式编码的数据. 6.2.2 解决方案 json模块中提供了一种简单的方法来编码和解码JSON格式的数据.这两个主要的函数就是json.dumps()以及json.loads().这两个函数在命名上借鉴了其他序列化处理库的接口,比如pickle.下面的示例展示了如何将Python数据结构转换为JSON: import json data = { 'name' : 'ACME',

Python读写Json涉及到中文的处理方法_python

今天在帮前端准备数据的时候,需要把数据格式转成json格式,说实话,涉及到中文有时候真的是很蛋疼,除非对Python的编码规则比较了解,不然处理起来真的很蛋疼. 整个逻辑 我们需要处理的是把一些文章处理,生成多个html文件,然后用json来显示文章的列表,图片,摘要和标题. 思路 为了以后的数据扩展,那必须有一个数据库,我的想法就是自己写一个简单的网页做为提交输入,然后post到后台以后录入到数据库中,再写一个展示文章的页面,展示效果正确后,写一个requests动态的把所有的数据都爬下来生成

Android实现读写JSON数据的方法_Android

本文实例讲述了Android实现读写JSON数据的方法.分享给大家供大家参考.具体如下: 1. 解析JSON: package de.vogella.android.twitter.json; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import org.apache.http.HttpEntit

js读写json文件实例代码_javascript技巧

本节为大家介绍下js如何读写json文件,代码很简练 function funSave() { var id = $('#testText1')[0].value; var name = $('#testText2')[0].value; var str = '{mydata:[' + '{id:' + id + ',name:' + name + '}' + ']}'; str = "{MyData:[{id:'" + id + "',name:'" + name

读写json中文ASCII乱码问题的解决方法_python

今天要帮前端写一个小后台,就是读取数据然后转成json送给他,让他去展示.数据很简单,但是处理的时候遇到了一个问题,文件中涉及到了中文的处理,每次处理完写的json格式就是ASCII码,完全没办法用.代码如下: # -*- coding: utf-8 -*- import json import codecs f = codecs.open('data.txt', 'r', 'utf-8') content = json.load(f) print content[0]['id'] jsdata

Android实现读写JSON数据的方法

本文实例讲述了Android实现读写JSON数据的方法.分享给大家供大家参考.具体如下: 1. 解析JSON: package de.vogella.android.twitter.json; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import org.apache.http.HttpEntit

C# 读写App.config配置文件的方法

一.配置文件概述: 应用程序配置文件是标准的 XML 文件,XML 标记和属性是区分大小写的.它是可以按需要更改的,开发人员可以使用配置文件来更改设置,而不必重编译应用程序.配置文件的根节点是configuration.我们经常访问的是appSettings,它是由.Net预定义的配置节.我们经常使用的配置文件的架构是客诉下面的形式.先大概有个印象,通过后面的实例会有一个比较清楚的认识.下面的"配置节"可以理解为进行配置一个XML的节点. 常见配置文件模式: <configura

javascript读写json示例

 JSON是一种简单的数据格式,比xml更轻巧,在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包,下面有个示例,大家可以参考下 JSON (JavaScript Object Notation)一种简单的数据格式,比xml更轻巧. JSON 是 JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包.    JSON的规则很简单: 对象是一个无序的"'名称/值'对"集合.一个对象以&q