用C#语言将josn串{ "d": "{\"code\":\"200\", \"errorMsg\":[], \"data\":[{\"id\":\"SO002230413000003\" },{\"id\":\"113225357\" }] }" }转成对象
时间: 2023-08-30 11:10:22 浏览: 105
假设你有一个名为 `JsonData` 的类,其中包含 `code`、`errorMsg` 和 `data` 属性,以及一个名为 `DataItem` 的嵌套类,其包含 `id` 属性。可以使用 `System.Text.Json` 命名空间来将 JSON 字符串转换为对象。下面是一个示例代码:
```csharp
using System;
using System.Text.Json;
class Program
{
static void Main(string[] args)
{
string jsonString = "{\"d\":\"{\\\"code\\\":\\\"200\\\", \\\"errorMsg\\\":[], \\\"data\\\":[{\\\"id\\\":\\\"SO002230413000003\\\" },{\\\"id\\\":\\\"113225357\\\" }] }\" }";
JsonDocument jsonDocument = JsonDocument.Parse(jsonString);
JsonElement root = jsonDocument.RootElement;
string dataJsonString = root.GetProperty("d").GetString();
JsonData jsonData = JsonSerializer.Deserialize<JsonData>(dataJsonString);
Console.WriteLine(jsonData.code);
foreach (JsonData.DataItem item in jsonData.data)
{
Console.WriteLine(item.id);
}
}
}
class JsonData
{
public string code { get; set; }
public string[] errorMsg { get; set; }
public DataItem[] data { get; set; }
public class DataItem
{
public string id { get; set; }
}
}
```
解析 JSON 字符串的过程分为以下几个步骤:
1. 使用 `JsonDocument.Parse` 方法将 JSON 字符串转换为 `JsonDocument` 对象。
2. 从 `JsonDocument` 对象中获取根元素 `RootElement`。
3. 从根元素中获取 `d` 属性的字符串值,并将其保存到 `dataJsonString` 变量中。
4. 使用 `JsonSerializer.Deserialize` 方法将 `dataJsonString` 反序列化为 `JsonData` 对象。在这里,我们使用 `JsonData` 类型作为泛型参数,告诉 `JsonSerializer` 应该将 JSON 数据转换成一个 `JsonData` 对象。
5. 打印 `JsonData` 对象的属性值。
需要注意的是,由于 JSON 字符串中包含了转义字符,因此需要在某些字符前加上 `\` 转义。例如,在 `dataJsonString` 中,`"code":"200"` 应该被写成 `"code\":\"200\""`。
阅读全文