简体   繁体   English

Json在C#中反序列化

[英]Json Deserialize in C#

How to use JsonConvert.DeserializeObject with below Json 如何在下面的Json中使用JsonConvert.DeserializeObject

[{
  "attributes" : {
    "type" : "User",
    "url" : "/xx/xx/xx"
  },
  "Id" : "1",
  "Name" : "abc"
},{
  "attributes" : {
    "type" : "User",
    "url" : "/xx/xx/xx"
  },
  "Id" : "2",
  "Name" : "abc"
},{
  "attributes" : {
    "type" : "User",
    "url" : "/xx/xx/xx"
  },
  "Id" : "3",
  "Name" : "abc"
}]

These are my class 这些是我班

public class Attributes
{
    public string type { get; set; }
    public string url { get; set; }
}

public class RootObject
{
    public Attributes attributes { get; set; }
    public string Id { get; set; }
    public string Name { get; set; }
}

I have tried with 我尝试过

var c = JsonConvert.DeserializeObject <RootObject>(jsonText);

Your Json actually represents an array of RootObject instances. 您的Json实际上代表了一个RootObject实例数组。 Try this: 尝试这个:

var c = JsonConvert.DeserializeObject<RootObject[]>(jsonText);

Or possibly 或者可能

var c = JsonConvert.DeserializeObject<List<RootObject>>(jsonText);

Or even 甚至

var c = JsonConvert.DeserializeObject<IEnumerable<RootObject>>(jsonText);

您的JSON实际上是一个数组,因此请尝试将其反序列化为RootObject[]

var c = JsonConvert.DeserializeObject<RootObject[]>(jsonText);

You json is a array (or collection), try to deserialize it using the array type: json是一个数组(或集合),请尝试使用数组类型反序列化它:

var c = JsonConvert.DeserializeObject<RootObject[]>(jsonText);

Or any other type of collection, for sample: 或任何其他类型的集合,例如:

var c = JsonConvert.DeserializeObject<IEnumerable<RootObject>>(jsonText);
var c = JsonConvert.DeserializeObject<ICollection<RootObject>>(jsonText);

Try telling the deserializer what you're expecting to deserialize to, in this case RootObject. 尝试告诉反序列化器您希望反序列化的内容,在本例中为RootObject。 According to the documentation of the method you're currently calling JsonConvert.DeserializeObject Method (String) returns a .net object. 根据该方法文档,您当前正在调用 JsonConvert.DeserializeObject Method (String)返回一个.net对象。

While this method JsonConvert.DeserializeObject<T> Method (String) returns the specified type. 虽然此方法 JsonConvert.DeserializeObject<T> Method (String)返回指定的类型。 for example: 例如:

public class Attributes
{
    public string type { get; set; }
    public string url { get; set; }
}

public class RootObject
{
    public Attributes attributes { get; set; }
    public string Id { get; set; }
    public string Name { get; set; }
}

RootObject c = JsonConvert.DeserializeObject<RootObject>(jsonText);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM