C# 创建用于 JSON 序列化和反序列化的 .NET 对象

标签 c# json

<分区>

我正在使用 C# 为我的 twitch 聊天机器人开发积分系统。我需要将用户列表及其积分和小时数保存到本地 .txt 文件中,如下所示:

  • 用户:???
    • 用户名:???
      • 尼克:字符串
      • 点:整数
      • 小时:整数
    • 用户名:???
      • 尼克:字符串
      • 点:整数
      • 小时:整数
    • 用户名:???
      • 尼克:字符串
      • 点:整数
      • 小时:整数

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

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

谢谢你的时间, X3ntr

最佳答案

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

可能最好和最安全的方法是手动编写。如果您使用的是 vs2015,您还可以复制 json 并将其粘贴为类。

您可以在此处找到此选项: enter image description here

另一种选择是使用类似 http://json2csharp.com/ 的网站您可以在此处粘贴 JSON,这也会为您的 JSON 生成类。请记住,这些生成器并非 100% 准确,因此您可能需要自行更改某些属性。

我们得到了模型,我们可以使用像 JSON.net 这样的库反序列化我们的 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# 创建用于 JSON 序列化和反序列化的 .NET 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37216070/

相关文章:

c# - C# 视频类(class)

c# - 无法理解 param 标签的作用

c# - 来自 c# DateTime 的 Javascript 日期

json - 反序列化 JSON 区分缺失值和空值

PHP MySQL JSON 查询

sql - 在 PostgreSQL 中查询 JSON 字段

c# - 重新设置单例httpclient的证书(Reconfiguring IHttpclientFactory?)

c#在方法的参数中继承一个带有派生类的接口(interface)

json - 如何在Dart中定义一个属性可以为null或另一个模型的模型

java - Elasticsearch java 顶级查询