从 JSON 对象转换为 C# 对象时遇到问题 - 类如何工作
本文关键字:对象 何工作 工作 问题 转换 JSON 遇到 | 更新日期: 2023-09-27 17:55:58
{
"device": "Lamp",
"type": "Switch",
"commands": [
{
"name": "turn Lamp on",
"command": "/api/Lamp/ON"
},
{
"name": "turn Lamp off",
"command": "/api/Lamp/OFF"
}
]
}
我需要将 JSON 反序列化为 (n) 个 C# 对象。我在理解如何格式化 C# 代码时遇到了麻烦。我用了 json2csharp.com,想出了这个:
public class Command
{
public string name { get; set; }
public string command { get; set; }
}
public class RootObject
{
public string device { get; set; }
public string type { get; set; }
public List<Command> commands { get; set; }
}
但是,我不完全理解这两个不同的对象。这是返回 command1
空值的 C# 代码:
HttpClient client = new HttpClient();
string url = "http://localhost:8080/api/whatcanisay/";
string json = await client.GetStringAsync(url);
Commands command1 = JsonConvert.DeserializeObject<Commands>(json);
TestOutput.Text = command1.command;
如果有人可以解释这些类以及它们如何从 JSON 转移过来,那将非常有帮助。
这是
JSON.net,它是.NET最流行的JSON框架之一。
基本上,它的工作方式是定义与 JSON 架构匹配的类,然后将 json 字符串转换为 C# 对象。
目的是使解析 JSON 数据变得更加容易,否则您必须手动将每个 JSON 值映射到对象属性。
这是一个开源项目,所以请随意阅读代码
https://github.com/JamesNK/Newtonsoft.Json
您可以使用
System.Web.Extensions 和 JavaScriptSerializer.DeserializeObject Microsoft反序列化 JSON 字符串。
首先,必须具有与 JSON 文件关联的类。若要创建类,请选择 JSON 示例数据,然后在 Visual Studio 中转到"编辑/粘贴特殊"/"将 JSON 粘贴为类"。
接下来,使用此示例。
string json = await client.GetStringAsync(url);
var root = new JavaScriptSerializer().Deserialize<RootObject>(json);
// root object contains all JSON data.
或者您也可以使用完整的 JSON 库,例如 http://www.newtonsoft.com/json