C#为JSON序列化和反序列化创建一个.NET对象

前端之家收集整理的这篇文章主要介绍了C#为JSON序列化和反序列化创建一个.NET对象前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > How do I turn a C# object into a JSON string in .NET?14个
我正在为C#中的twitch chat bot开发一个点系统.我需要将点数和小时数的用户列表保存到本地.txt文件中,如下所示:

>用户:???

>用户名:???

>尼克:字符串
>分:int
>小时:int

>用户名:???

>尼克:字符串
>分:int
>小时:int

>用户名:???

>尼克:字符串
>分:int
>小时:int

我正在尝试创建一个.NET对象来序列化为一个JSON字符串并将其写入我的.txt文件,但我被困在这里.

我认为用户需要是某种类型的数组,但我如何处理用户名?我不认为JSON支持自定义类型?

谢谢你的时间,
X3ntr

解决方法

首先,我们需要创建一个模型.此模型需要匹配JSON的结构.有几种方法可以创建此模型.

可能最好和最安全的方法是手工编写.如果你使用的是vs2015,你也可以复制json并将其粘贴为类.

你可以在这里找到这个选项:

另一个选择是使用像http://json2csharp.com/这样的网站,你可以粘贴JSON,这也将为你的JSON生成类.请记住,这些生成器并非100%准确,因此您可能需要更改自己的某些属性.

我们得到了模型,我们可以使用像JSON.net这样的lib来反序列化我们的JSON.在网站上还有一些关于如何使用JSON.net的额外文档

var userList = JsonConvert.DeserializeObject<List<UserModel>>(users); //Users being the json as text.

请记住,如果您错过了模型中的属性,则不会总是抛出错误.因此,请确保所有属性都正确序列化.

序列化就像反序列化一样简单.

string json = JsonConvert.SerializeObject(model);
File.WriteAllText("C:\json.txt",json);

可选是在编写json时添加编码.

File.WriteAllText("C:\json.txt",json,Encoding.UTF8);

猜你在找的C#相关文章