C# 对象 和 Json 各种转换

C# 对象 和 Json 各种转换

第二篇,直接进入正题

对象转Json

首先我们要引用一个NuGet程序包

引用方法如下:
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

添加引用:
右键项目-》管理NuGet程序包-》浏览-》搜索:Newtonsoft,根据自己的程序框架选择对应的版本
根据自己的程序框架选择对应的版本
如果搜索不出结果就把程序包源切换到:nuget.org,如下图:
选择nuget.org
我这边为了方便,用txt存放Json,直接读取。

//string 转 Json
/*
 * testjson.txt内容如下
    {
 		"name": "zs",
		 "age": 20
    }
 */
string _jsonfile = File.ReadAllText("testjson.txt");
JObject _json = JObject.Parse(_jsonfile);
string _name = _json["name"].ToString();//name是字符串推荐使用ToString()取值
int _age = (int)_json["age"];

Console.WriteLine("name:" + _name);
Console.WriteLine("age:" + _age);

//out:
//name:zs
//age:20

实体类 与 Json 互相转换



//实体类转Json
public class Root
{
     public string name { get; set; }
     public int age { get; set; }
     public DateTime date { get; set; }
 }

Root root = new Root
 {
     name = "zs",
     age = 22,
     date = DateTime.Now
 };
 string _json = JsonConvert.SerializeObject(root);
 Console.WriteLine(_json);
 
 //Json 转 对象
Root _root = JsonConvert.DeserializeObject<Root>(_json);
Console.WriteLine(_root.age);
Console.WriteLine(_root.date);
Console.WriteLine(_root.name);

//out:
//22
//2019/8/16 21:30:27
//zs

接下来是 Json 转换 List< T >

//举个栗子

List<Root> _roots = new List<Root>();
for (int i = 0; i < 3; i++) 
{
    Root root = new Root
    {
        name = "zs0",
        age = 22,
        date = DateTime.Now
    };
    root.name += i;
    _roots.Add(root);
}

//把List<T>转换Json还是用JsonConvert.SerializeObject() 
string _json = JsonConvert.SerializeObject(_roots);

Console.WriteLine(_json);
//out:
//[{"name":"zs00","age":22,"date":"2019-08-16T21:55:35.5833003+08:00"},
//{ "name":"zs01","age":22,"date":"2019-08-16T21:55:35.5833003+08:00"},
//{ "name":"zs02","age":22,"date":"2019-08-16T21:55:35.5833003+08:00"}]

//Json转换List<T>
List<Root> _root = JsonConvert.DeserializeObject<List<Root>>(_json);

foreach (Root rootNode in _root)
{
    Console.WriteLine(rootNode.age);
    Console.WriteLine(rootNode.date);
    Console.WriteLine(rootNode.name);
}

//out:
//2019 / 8 / 16 21:54:32
//zs00
//22
//2019 / 8 / 16 21:54:32
//zs01
//22
//2019 / 8 / 16 21:54:32
//zs02
//这里是 Dictionary 与 Json 的互相转换

Dictionary<string, Root> _keyValues = new Dictionary<string, Root>();
Root _root = new Root
{
    name = "zs",
    age = 22,
    date = DateTime.Now
};
_keyValues.Add("01", _root);

//Dictionary 转换 Json  还是用 JsonConvert.SerializeObject() 方法
string _json = JsonConvert.SerializeObject(_keyValues);
Console.WriteLine(_json);
//out:
//{"01":{"name":"zs","age":22,"date":"2019-08-16T22:02:04.3782758+08:00"}}

// Json 转换对应类型的 Dictionary
Dictionary<string, Root> _jsonConvert = JsonConvert.DeserializeObject<Dictionary<string, Root>>(_json);
Root _root01 = _jsonConvert["01"] as Root;

Console.WriteLine(_root01.age);
Console.WriteLine(_root01.date);
Console.WriteLine(_root01.name);

//out:
//22
//2019 / 8 / 16 22:09:03
//zs


总结

以上例子可以归为两个方法:

1.对象转换Json用:
string _json = JsonConvert.SerializeObject(object);

2.Json转换对象使用:
object _object = JsonConvert.DeserializeObject< object >(_json)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值