C# 格式化JSON的两种实现方式
作者:Csharp 时间:2023-03-14 05:31:16
当我们拿到一大段JSON字符串的时候,分析起来简直头皮发麻,相信很大一部分朋友也都会直接去BEJSON等网站去做一个JSON格式化,已方便自己查看数据、分析日志等
本篇我们可以使用JSON.NET来实现JSON数据的格式化。
实现功能:
格式化JSON字符串
开发环境:
开发工具: Visual Studio 2013
.NET Framework版本:4.5
实现代码:
//第一种方式
private void btnFormat1_Click(object sender, EventArgs e)
{
if (textBox1.Text.Length == 0)
{
return;
}
try
{
JsonSerializer serializer = new JsonSerializer();
TextReader tr = new StringReader(textBox1.Text);
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);
textBox1.Text = textWriter.ToString();
}
}
catch (Exception ex)
{
MessageBox.Show("错误的JSON");
}
}
//第二种方式
private void btnFormat2_Click(object sender, EventArgs e)
{
if (textBox1.Text.Length == 0)
{
return;
}
try
{
//JObject.ToString()方法会内部调用格式化,所以直接使用即可
string json = textBox1.Text.Trim();
//判读是数组还是对象
if (json.StartsWith("["))
{
JArray jobj = JArray.Parse(textBox1.Text);
textBox1.Text = jobj.ToString();
}
else if (json.StartsWith("{"))
{
JObject jobj = JObject.Parse(textBox1.Text);
textBox1.Text = jobj.ToString();
}
}
catch (Exception ex)
{
MessageBox.Show("错误的JSON");
}
}
//清空
private void btnClear_Click(object sender, EventArgs e)
{
textBox1.Text = "";
}
实现效果:
来源:https://blog.csdn.net/qq_27410185/article/details/123040341
标签:C#,格式化,JSON
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
不安装excel使用c#创建excel文件
2023-02-20 07:03:25
Android轻松实现多语言的方法示例
2023-02-17 19:33:38
![](https://img.aspxhome.com/file/2023/2/138582_0s.gif)
android之datepicker控件的用法
2021-12-26 04:07:31
简略分析Android的Retrofit应用开发框架源码
2023-09-17 22:12:30
![](https://img.aspxhome.com/file/2023/4/93304_0s.png)
Java中Socket用法详解
2021-07-27 07:14:07
![](https://img.aspxhome.com/file/2023/1/113421_0s.jpg)
JAVA OutputStreamWriter流的实现
2021-08-12 19:45:47
C#实现Excel导入sqlite的方法
2021-12-02 23:38:17
C#中的自动类型转换和强制类型转换
2023-08-10 07:11:14
Android重要控件SnackBar使用方法详解
2022-11-10 04:49:41
Java 多线程等待优雅的实现方式之Phaser同步屏障
2023-11-29 09:47:43
![](https://img.aspxhome.com/file/2023/9/60549_0s.png)
.net实现序列化与反序列化实例解析
2022-08-05 06:42:08
Java 设计模式之责任链模式及异步责任链详解
2021-08-08 19:14:23
![](https://img.aspxhome.com/file/2023/9/72639_0s.png)
Android编程之交互对话框实例浅析
2021-09-09 04:47:08
Android简单实现弹幕效果
2022-08-12 01:24:08
深入解析Spring Cloud内置的Zuul过滤器
2022-05-16 12:49:04
ImportBeanDefinitionRegistrar手动控制BeanDefinition创建注册详解
2021-11-11 18:49:18
spring boot starter actuator(健康监控)配置和使用教程
2021-07-29 06:24:18
Jetpack Compose修饰符专项精讲
2021-11-28 06:33:21
![](https://img.aspxhome.com/file/2023/4/103884_0s.png)
基于Flutter实现图片选择和图片上传
2023-07-06 04:28:50
![](https://img.aspxhome.com/file/2023/1/106021_0s.jpg)
Java JDK与cglib动态代理有什么区别
2023-07-23 08:10:15