将json转换为C#中的对象

时间:2015-06-24 11:20:11

标签: c# .net

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

 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>>();

但无法解决以下错误

  

{&#34;无法将当前JSON对象(例如{\&#34; name \&#34;:\&#34; value \&#34;})反序列化为类型&System;系统。 Collections.Generic.List`1 [位置]&#39;因为类型需要一个JSON数组(例如[1,2,3])才能正确反序列化。\ r \ n要解决此错误,要么将JSON更改为JSON数组(例如[1,2,3])或更改反序列化类型,以便它是一个普通的.NET类型(例如,不是像整数的基本类型,不是像数组或列表那样的集合类型),可以从JSON对象反序列化。 JsonObjectAttribute也可以添加到类型中以强制它从JSON对象反序列化。\ r \ n路由&#39;位置&#39;。&#34;}

3 个答案:

答案 0 :(得分:1)

看看作为.NET

的一部分的原生json deserializaton

MSDN - How to: Serialize and Deserialize JSON Data

答案 1 :(得分:0)

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

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

public class LocationsContainer
{
    public List<Location> Location { get; set; }
}

Result.ToObject<LocationsContainer>();

答案 2 :(得分:0)

尝试使用Json.NET库。

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