json 格式化輸出
阿新 • • 發佈:2019-02-06
效果
格式化前的字串:
{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); }