如何使用C#反序列化JSON数据?

如何使用C#反序列化JSON数据?,c#,json,serialization,C#,Json,Serialization,我还看到了其他类似的问题,但这些都是非常复杂的JSON数据,其中包含对象。尽管我正在使用的JSON从来都不是静态的,但我怀疑它是否像这些一样复杂。而且,这是我第一次将JSON与C结合使用,所以我有点不知所措 我试图实现的是分离从API接收的数据,该API是我在C#中使用WebRequest提示的 返回的JSON数据的方式与之类似 我希望能够通过以下方式访问上述字符串的所有属性: ID: 名称: ~~ ~~ ~~ ... 等等 我想一定要为这个课程做些什么 感谢所有帮助,提前谢谢大家。创建一个这样

我还看到了其他类似的问题,但这些都是非常复杂的JSON数据,其中包含对象。尽管我正在使用的JSON从来都不是静态的,但我怀疑它是否像这些一样复杂。而且,这是我第一次将JSON与C结合使用,所以我有点不知所措

我试图实现的是分离从API接收的数据,该API是我在C#中使用WebRequest提示的

返回的JSON数据的方式与之类似

我希望能够通过以下方式访问上述字符串的所有属性:

ID:
名称:
~~
~~
~~ ... 等等

我想一定要为这个课程做些什么


感谢所有帮助,提前谢谢大家。

创建一个这样的类即可

  public class RootObject
{
    public int Id { get; set; }
    public string  name { get; set; }
    public int profileIconId { get; set; }
    public int Level { get; set; }
    public string revisionDate { get; set; }
}
然后将json.Net和此代码安装到主方法中

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

从Nuget安装Json.Net

Install-Package Newtonsoft.Json

为内部对象(
{“id”:…,“name”:…}
)声明类:

如您所见,您可以使用
JsonPropertyAttribute
指定从json字段到.Net对象属性的重命名映射

将json读入
字典
,并获取“johny.debt”键的值:

并将其反序列化:

var root = JsonConvert.DeserializeObject<RootObject>(jsonText);
var johhny = root.JohhnyDebt;
var root=JsonConvert.DeserializeObject(jsonText);
var johny=root.johnydebt;

只需定义一个反映您的结构的类,然后将其反序列化到这个类中。。@DrKoch信不信由你,这就是我需要帮助的地方。你试过谷歌吗?我想你需要上二级课。第一级是“约翰尼系”。此属性包含第二级类。您的json格式已更改,请稍候,我将更新ASNWerBeautify。我假设JSON现在被反序列化并放在一个对象中,我如何以最佳方式访问属性?dict[“info”].property?作为简单的对象属性。示例:
Console.Write(“Name is”+johny.Name)
如果需要从根对象读取额外数据,请查看
JsonExtensionDataAttribute
[JsonExtensionData]公共字典其他{get;set;}
Install-Package Newtonsoft.Json
public class InnerObject
{
    [JsonProperty("id")]
    public int Id { get; set; }

    [JsonProperty("name")]
    public string  Username { get; set; }

    [JsonProperty("profileIconId")]
    public int ProfileIconId { get; set; }

    [JsonProperty("level")]
    public int Level { get; set; }

    [JsonProperty("revisionDate")]
    public string RevisionDate { get; set; }
}
var dict = JsonConvert.DeserializeObject<Dictionary<string, InnerObject>>(jsonText);
var johhny = dict["johhny.debt"];
public class RootObject
{
    [JsonProperty("johhny.debt")]
    public InnerObject JohhnyDept { get; set; }
}
var root = JsonConvert.DeserializeObject<RootObject>(jsonText);
var johhny = root.JohhnyDebt;