📌  相关文章
📜  如何在字符串JSON c#中转换对象(1)

📅  最后修改于: 2023-12-03 15:24:37.865000             🧑  作者: Mango

如何在字符串JSON c#中转换对象

在C#中,我们经常需要在字符串JSON和对象之间相互转换。下面是一个介绍如何在字符串JSON c#中转换对象的指南。

特殊说明

本指南的代码示例都基于 .NET Framework 4.5 编写。

将JSON字符串转换为对象

我们可以使用 JsonConvert.DeserializeObject 方法将JSON字符串转换为对象。这个方法需要两个参数:转换的字符串和要转换的对象类型。

下面是一个示例,用于将JSON字符串转换为一个自定义类的对象:

using Newtonsoft.Json;

public class MyClass
{
    public int Id { get; set; }
    public string Name { get; set; }
}

// JSON字符串
string jsonString = "{\"Id\": 1, \"Name\": \"John Doe\"}";

// 将JSON字符串转换为MyClass对象
MyClass myObject = JsonConvert.DeserializeObject<MyClass>(jsonString);
将对象转换为JSON字符串

我们可以使用 JsonConvert.SerializeObject 方法将对象转换为JSON字符串。这个方法只需要一个参数:要转换的对象。下面是一个示例,用于将一个自定义类的对象转换为JSON字符串:

using Newtonsoft.Json;

public class MyClass
{
    public int Id { get; set; }
    public string Name { get; set; }
}

// MyClass对象
MyClass myObject = new MyClass
{
    Id = 1,
    Name = "John Doe"
};

// 将MyClass对象转换为JSON字符串
string jsonString = JsonConvert.SerializeObject(myObject);
处理JSON属性名称

默认情况下,JsonConvert.SerializeObject 方法将使用C#对象属性名称作为JSON属性名称。如果需要将C#对象属性名称转换为不同的JSON属性名称,我们可以为C#属性添加 JsonProperty 属性。下面是一个示例:

using Newtonsoft.Json;

public class MyClass
{
    [JsonProperty(PropertyName = "identifier")]
    public int Id { get; set; }

    [JsonProperty(PropertyName = "full_name")]
    public string Name { get; set; }
}

// MyClass对象
MyClass myObject = new MyClass
{
    Id = 1,
    Name = "John Doe"
};

// 将MyClass对象转换为JSON字符串
string jsonString = JsonConvert.SerializeObject(myObject);

在上面的示例中,我们将C#对象属性名称 IdName 分别转换为 JSON 属性 identifierfull_name

反序列化复杂JSON对象

一些JSON字符串可能会包含嵌套的对象或数组。我们可以使用 JsonConvert.DeserializeObject 方法将它们转换为复杂对象。下面是一个示例:

using Newtonsoft.Json;
using System.Collections.Generic;

public class MyClass
{
    public int Id { get; set; }
    public string Name { get; set; }
    public List<string> Hobbies { get; set; }
}

// JSON字符串
string jsonString = "{\"Id\":1,\"Name\":\"John Doe\",\"Hobbies\":[\"reading\",\"gaming\",\"biking\"]}";

// 将JSON字符串转换为MyClass对象
MyClass myObject = JsonConvert.DeserializeObject<MyClass>(jsonString);

在上面的示例中,我们将JSON字符串转换为一个类型为 MyClass 的对象。其中,Hobbies 这个属性用于存储一个字符串列表。

序列化复杂JSON对象

我们可以使用 JsonConvert.SerializeObject 方法将复杂对象序列化为JSON字符串。下面是一个示例:

using Newtonsoft.Json;
using System.Collections.Generic;

public class MyClass
{
    public int Id { get; set; }
    public string Name { get; set; }
    public List<string> Hobbies { get; set; }
}

// 包含复杂对象的MyClass对象
MyClass myObject = new MyClass
{
    Id = 1,
    Name = "John Doe",
    Hobbies = new List<string> { "reading", "gaming", "biking" }
};

// 将MyClass对象转换为JSON字符串
string jsonString = JsonConvert.SerializeObject(myObject);

在上面的示例中,我们将类型为 MyClass 的对象转换为JSON字符串。其中,Hobbies 这个属性用于存储一个字符串列表。

结论

以上是有关如何在字符串JSON c#中转换对象的指南。通过使用 JsonConvert 类,我们可以轻松地将C#对象序列化为JSON字符串,或将JSON字符串反序列化为C#对象。并且,通过在C#属性上添加 JsonProperty 属性,我们可以自定义JSON属性名称,以满足我们的需要。