📅  最后修改于: 2023-12-03 15:24:37.865000             🧑  作者: Mango
在C#中,我们经常需要在字符串JSON和对象之间相互转换。下面是一个介绍如何在字符串JSON c#中转换对象的指南。
本指南的代码示例都基于 .NET Framework 4.5 编写。
我们可以使用 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);
我们可以使用 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);
默认情况下,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#对象属性名称 Id
和 Name
分别转换为 JSON 属性 identifier
和 full_name
。
一些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
这个属性用于存储一个字符串列表。
我们可以使用 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属性名称,以满足我们的需要。