json 格式化输出

刺骨的言语ヽ痛彻心扉 2024-02-17 16:12 140阅读 0赞

效果

  1. 格式化前的字符串:
  2. {id=11,name="xxj",age=111,time=DateTime.Now};
  3. 格式化后的字符串:
  4. {
  5. id=11,
  6. name="xxj",
  7. age=111,
  8. time='2010-1-1 1:1:1'
  9. };

需要1:Newtonsoft.Json.dll 组件

需要2:自定义扩展方法

  1. /// <summary>
  2. /// 生成Json格式
  3. /// key=字段名,value=字段值
  4. /// </summary>
  5. /// <typeparam name="T">待序列化的对象</typeparam>
  6. /// <returns></returns>
  7. /// <remarks>创建人员(日期):★xxj★(111026 19:08)</remarks>
  8. public static string ToJsonSerialize<T>(this T obj) //where T : class
  9. {
  10. if (obj.IsNullOrDbNull())
  11. return string.Empty;
  12. if (obj is DataTable)
  13. return DataTableToJson(obj as DataTable);
  14. JavaScriptSerializer serialize = new JavaScriptSerializer();
  15. //针对日期序列化时区的转化
  16. var json = Regex.Replace(serialize.Serialize(obj), @"\\/Date\((-?\d+)\)\\/", match =>
  17. {
  18. var dt = new DateTime(1970, 1, 1);
  19. dt = dt.AddMilliseconds(long.Parse(match.Groups[1].Value));
  20. dt = dt.ToLocalTime();
  21. return dt.ToString("yyyy-MM-dd HH:mm:ss");
  22. });
  23. return json;
  24. }

格式化json代码

  1. /// <summary>
  2. /// 测试json字符串格式化
  3. /// </summary>
  4. [TestMethod]
  5. public void TestJsonFormat()
  6. {
  7. //格式化json字符串
  8. var data = new
  9. {
  10. id=11,
  11. name="xxj",
  12. age=111,
  13. time=DateTime.Now
  14. };
  15. var json = data.ToJsonSerialize();
  16. //Newtonsoft.Json.dll, v4.5.0.0
  17. JsonSerializer serializer = new JsonSerializer();
  18. TextReader tr = new StringReader(json);
  19. JsonTextReader jtr = new JsonTextReader(tr);
  20. object obj = serializer.Deserialize(jtr);
  21. if (obj != null)
  22. {
  23. StringWriter textWriter = new StringWriter();
  24. JsonTextWriter jsonWriter = new JsonTextWriter(textWriter)
  25. {
  26. Formatting = Formatting.Indented,
  27. Indentation = 4,
  28. IndentChar = ' '
  29. };
  30. serializer.Serialize(jsonWriter, obj);
  31. var jsonF = textWriter.ToString();
  32. }
  33. Assert.IsTrue(true);
  34. }

发表评论

表情:
评论列表 (有 0 条评论,140人围观)

还没有评论,来说两句吧...

相关阅读