JsonHelper

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace xiaoy.Comm
{
   /// <summary>
    /// json序列化helper类
    /// </summary>
    public class JsonHelper
    {
/// <summary>
        /// 从json文件中反序列化对象  文件名默认用类型名称
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        public static T Read<T>()
        {
            string filepath = AppDomain.CurrentDomain.BaseDirectory + typeof(T).Name + ".json";
            if (!File.Exists(filepath)) return default(T); 
            return JsonConvert.DeserializeObject<T>(File.ReadAllText(filepath));
        }
        /// <summary>
        /// 序列化对象到文件中  文件名默认用类型名称
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="model"></param>
        public static void Write<T>(object model)
        {
            string filepath = AppDomain.CurrentDomain.BaseDirectory + typeof(T).Name + ".json";
            File.WriteAllText(filepath, JsonConvert.SerializeObject(model));
        }

        /// <summary>
        /// 返回格式化json字符串,用于显示
        /// </summary>
        /// <param name="str">原始json字符串</param>
        /// <returns></returns>
        public static string ConvertJsonString(string str)
        {
            try
            {

                //格式化json字符串
                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;
                }
            }
            catch
            {
                return str;
            }
        }
  }
}

 

posted @ 2020-10-21 14:41  小y  阅读(25)  评论(0)    收藏  举报