json 格式化输出

效果

格式化前的字符串:

{id=11,name="xxj",age=111,time=DateTime.Now};

格式化后的字符串:
{
  id=11,
  name="xxj",
  age=111,
  time='2010-1-1 1:1:1'
};


需要1:Newtonsoft.Json.dll 组件

需要2:自定义扩展方法

        /// <summary>
        /// 生成Json格式
        /// key=字段名,value=字段值
        /// </summary>
        /// <typeparam name="T">待序列化的对象</typeparam>
        /// <returns></returns>
        /// <remarks>创建人员(日期):★xxj★(111026 19:08)</remarks>
        public static string ToJsonSerialize<T>(this T obj) //where T : class
        {
            if (obj.IsNullOrDbNull())
                return string.Empty;

            if (obj is DataTable)
                return DataTableToJson(obj as DataTable);

            JavaScriptSerializer serialize = new JavaScriptSerializer();
            //针对日期序列化时区的转化
            var json = Regex.Replace(serialize.Serialize(obj), @"\\/Date\((-?\d+)\)\\/", match =>
            {
                var dt = new DateTime(1970, 1, 1);
                dt = dt.AddMilliseconds(long.Parse(match.Groups[1].Value));
                dt = dt.ToLocalTime();
                return dt.ToString("yyyy-MM-dd HH:mm:ss");
            });
            return json;
        }

格式化json代码

    /// <summary>
    /// 测试json字符串格式化
    /// </summary>
    [TestMethod]
    public void TestJsonFormat()
    {
        //格式化json字符串
        var data = new
        {
            id=11,
            name="xxj",
            age=111,
            time=DateTime.Now
        };
        var json = data.ToJsonSerialize();
        //Newtonsoft.Json.dll, v4.5.0.0
        JsonSerializer serializer = new JsonSerializer();
        TextReader tr = new StringReader(json);
        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);
            var jsonF = textWriter.ToString();
        }


        Assert.IsTrue(true);
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值