在C#中将json转换为对象

本文关键字:对象 转换 json 中将 | 更新日期: 2023-09-27 17:59:17

我有以下格式的数据。我想将这些数据转换为对象。

 Result = {
 "Location": [
 "bangalore",
  1,
 "chennai",
  1,
 "mumbai",
  1,
 "delhi",
  0,
 "Agra",
  0
 ]
 }

在我的Location.cs中,我有以下字段。我想把数据分配给这个字段。我怎样才能实现这个

public string loc { get; set; }
public int count { get; set; }

我试过

 Location = Result.ToObject<List<Location>>();

但不工作,得到以下错误

{"无法将当前JSON对象(例如{''"name ''":''"value ''"})反序列化为类型"System.Collections.Generic.List`1[Location]",因为该类型需要JSON数组(例如[1,2,3])才能正确反序列化。''r''n若要修复此错误,请将JSON更改为JSON数组(如[1,3,3]),或更改反序列化的类型,使其成为正常的.NET类型(例如,不是像integer这样的基元类型,也不是像数组或List这样的集合类型),可以从JSON对象反序列化。JsonObjectAttribute也可以添加到类型中,以强制它从JSON对象反序列化。''''r''n路径"位置"。"}

在C#中将json转换为对象

看看作为的一部分的本地json反序列化。净

MSDN-如何:序列化和反序列化JSON数据

问题是:Result是JSON对象,而不是JSON数组,因此无法将其转换为List<Location>

您需要一个包含位置列表的类,然后转换为该类:

public class LocationsContainer
{
    public List<Location> Location { get; set; }
}
Result.ToObject<LocationsContainer>();

尝试Json。NET库。

List<Location> locations = JsonConvert.DeserializeObject<List<Location>>(result);