C#语言 构建了一个复杂的JSON类,如何反序列化
时间: 2024-12-13 19:28:43 浏览: 2
在C#中,当你需要从复杂的JSON数据反序列化到预定义的类结构时,可以使用`System.Text.Json`或`Json.NET (Newtonsoft.Json)`库。以`System.Text.Json`为例,假设你有以下一个复杂的JSON类定义:
```csharp
public class User
{
public string Name { get; set; }
public int Age { get; set; }
public Address HomeAddress { get; set; }
public List<string> Hobbies { get; set; }
}
public class Address
{
public string Street { get; set; }
public string City { get; set; }
}
```
你可以这样反序列化JSON字符串:
```csharp
string json = "{\"Name\":\"John\", \"Age\":30, \"HomeAddress\":{\"Street\":\"123 Main St\",\"City\":\"New York\"}, \"Hobbies\":[\"Reading\",\"Gaming\"]}";
User user = JsonSerializer.Deserialize<User>(json);
// 现在user变量已经包含了来自JSON的数据
```
对于`Json.NET`,做法类似:
```csharp
string json = "{\"Name\":\"John\", \"Age\":30, \"HomeAddress\":{\"Street\":\"123 Main St\",\"City\":\"New York\"}, \"Hobbies\":[\"Reading\",\"Gaming\"]}";
User user = JsonConvert.DeserializeObject<User>(json);
```
注意,如果JSON格式不匹配你的类结构,如键不存在或值类型错误,反序列化可能会抛出异常。你可以选择捕获并处理这些异常,或者使用`JsonSerializerOptions`设置错误策略。
阅读全文