C# 格式化JSON的两种实现方式
作者:Csharp 发布时间:2023-03-14 05:31:16
标签:C#,格式化,JSON
当我们拿到一大段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


猜你喜欢
- 前言最近我跟自定义View杠上了,甚至说有点上瘾到走火入魔了。身为菜鸟的我自然要查阅大量的资料,学习大神们的代码,这不,前两天正好在郭神在微
- Android四种数据存储的应用方式作为一个完整的应用程序,数据存储操作是必不可少的。因此,Android系统一共提供了四种数据存储方式。分
- 本文实例为大家分享了android桌面悬浮窗,实现录屏时间控制显示效果的具体代码,供大家参考,具体内容如下悬浮窗效果如上图所示:很简单的一个
- CollectionUtils.isNotEmpty()不存在问题org.apache.commons.collections.Collec
- Main方法如下:static void Main(string[] args){ dynamic st
- 目录1、如果一个方法或变量是"private"访问级别,那么它的访问范围是:2、代码将打印?3、下面关于hibernat
- 根据UGUI的射线检测机制获取当前鼠标下的UI:/// <summary> /// 获取鼠标停留处UI
- Java语言中,把异常分为两类:受检异常: 这类异常必须在throws子句中被显式抛出或者在方法内被捕获。例如,IOException异常或
- 本文实例总结了C#中split用法。分享给大家供大家参考,具体如下:以下是我转载的两个不同的人的,方便大家及自己查阅string s=&qu
- 前提其实很多框架都是对另一个框架的封装,我们在学习类似的框架的时候,难免会进入误区,所以我们就应该对其进行总结归纳,对比。本文就是对hibe
- 首先,我们需要增加用户对该脚本的执行权限,即 String cmdstring = "chmod a+x test.sh
- 引言使用标准框架验证Java bean的基础知识 - JSR 380,也称为Bean Validation 2.0。当然,验证用户输入在大多
- 1.运行程序时, AddOrEditBook1.BooksType = GetTypeName(model.BookType_ID); 出现
- 1、IO流1.流和流的分类什么是IO流?I:Input (输入)O: Ouput(输出)IO流的分类?有多种分类方式:一种方式是按照流的方向
- 01: 异步任务02: 定时任务一、SpringBoot--任务:邮件任务1.1 添加依赖(增加邮件支持)pom.xml <depen
- 关于静态类型检查和动态类型检查的解释:静态类型检查:基于程序的源代码来验证类型安全的过程;动态类型检查:在程序运行期间验证类型安全的过程;J
- 本文重在实现理解,过滤器,业务,逻辑需求,样式请无视。。项目结构如下1.idea新建Spring boot项目,在pom中加上thymele
- 定义定义了算法家族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的客户。解决的问题在有多种算法相似的情况下,
- 问题我需要从一个java的集合中,根据另一个集合的内容,删除第一个集合中不特定的元素。这看上去非常简单,但却遇到了问题。这是我要写的方法的头
- 本文实例为大家分享了java实现点击按钮事件弹出子窗口的具体代码,供大家参考,具体内容如下要求:1、在父窗口中添加一个按钮2、点击按钮弹出子