C#如何通过匿名类直接使用访问JSON数据详解
作者:suikhan 时间:2023-07-20 12:31:53
实验目的
在C#和Rest/Restful以及其它的Web服务交互过程中,大量使用到JSON传递数据,如何快捷的转化C#对象到JSON和转化JSON到C#对象,成为开发过程中频繁使用的内容。传统的方式下,我们需要定义和JSON对象同步的C#类并实例化成对象以遍操作,这里提供了一个直接使用匿名类的方式,相较于传统方式可以少定义一些类,操作更加简便。
开发环境
实现步骤
1.创建工程:控制台程序,命名为JsonTest
2.添加组件:增加JSON组件
第一步:右键点击项目,选择“管理NuGet程序包”菜单
第二步:在"NuGet: JsonTest"选项卡中选择浏览,输入json后回车,选择Newtonsoft.Json,选择版本后点击安装按钮。
第三步:完成安装
3.编写代码:简单结构
JSON格式如下:
{
"name":"张三",
"sex":"男",
"birthday": "2018-02-09"
}
CSharp代码
using Newtonsoft.Json;
using System;
namespace JsonTest
{
class Program
{
static void Main(string[] args)
{
string jsonstr = JsonConvert.SerializeObject(new
{
name = "张三",
sex = "男",
birthday = "2018-02-09"
});
Console.WriteLine("对象序列化后的字符串为:");
Console.WriteLine(jsonstr);
Console.WriteLine("\n\n字符串反序列化为对象后的值为:");
var jsonobj = JsonConvert.DeserializeObject<dynamic>(jsonstr);
Console.WriteLine("姓名:" + jsonobj.name);
Console.WriteLine("性别:" + jsonobj.sex);
Console.WriteLine("生日:" + jsonobj.birthday);
Console.Read();
}
}
}
执行结果
4.编写代码:数组的操作
CSharp代码
using Newtonsoft.Json;
using System;
namespace JsonTest
{
class Program
{
static void Main(string[] args)
{
string jsonstr = JsonConvert.SerializeObject(new[]{
new {
name = "张三",
sex = "男",
birthday = "2018-02-09"
},
new{
name = "李四",
sex = "男",
birthday = "2018-02-09"
}
});
Console.WriteLine("对象序列化后的字符串为:");
Console.WriteLine(jsonstr);
Console.WriteLine("\n\n字符串反序列化为对象后的值为:");
var jsonarr = JsonConvert.DeserializeObject<dynamic[]>(jsonstr);
foreach (var jsonobj in jsonarr)
{
Console.WriteLine("姓名:" + jsonobj.name);
Console.WriteLine("性别:" + jsonobj.sex);
Console.WriteLine("生日:" + jsonobj.birthday);
Console.WriteLine("---------------");
}
Console.Read();
}
}
}
执行结果
来源:https://www.jianshu.com/p/c4c7c631a7a9
标签:json数据,c#,匿名类
0
投稿
猜你喜欢
java的内部类和外部类用法讲解
2022-10-18 21:14:41
C#实现XML文件操作详解
2023-07-16 12:36:52
Java中List集合去重方法以及效率对比
2021-11-03 00:15:52
Android Studio实现简易计算器设计
2022-08-22 18:41:55
Android开发之Button事件实现与监听方法总结
2022-02-05 02:45:40
java编程实现基于UDP协议传输数据的方法
2022-11-14 04:22:22
Android通过自定义ImageView控件实现图片的缩放和拖动的实现代码
2022-03-02 22:52:08
Android6.0仿微信权限设置
2023-03-03 09:40:30
Android仿支付宝支付密码输入框
2021-12-31 00:30:31
C# dataset存放多张表的实例
2022-10-10 14:08:13
Android组件之服务的详解
2021-10-14 00:05:30
JAVA中的静态代理、动态代理以及CGLIB动态代理总结
2023-04-03 14:33:39
java使用jdbc操作数据库示例分享
2023-10-29 13:54:21
为什么Spring官方推荐的@Transational还能导致生产事故
2022-02-13 15:54:37
Android自定义view利用PathEffect实现动态效果
2023-08-17 09:35:00
Spring Data JPA中 in 条件参数的传递方式
2023-11-08 06:45:47
Spring boot+beetl+i18n国际化处理的方法
2023-07-22 00:36:31
解决在Unity中使用FairyGUI遇到的坑
2023-10-27 13:04:24
Android应用开发中Fragment的静态加载与动态加载实例
2021-11-14 15:14:11
Java web的读取Excel简单实例代码
2023-05-29 08:25:37