C#JSON.NET在另一个对象中使用JSONObject反序列化

C#JSON.NET在另一个对象中使用JSONObject反序列化,c#,json,serialization,json.net,C#,Json,Serialization,Json.net,我已经创建了一个连接到数据库的PHP接口,通过在PHP中编码JSON并在C#上使用JSON.NET对其进行解码。 到目前为止,一切都很顺利。 我使用了几个类,这些类都是为了与JSON.NET一起使用而创建的 { “接受”:“1”, “Naam”:“Rijst遇见ragout”, “GramPerPersoon”:“280”, “类型”:“Eten”, “指示”:[ “Maak rijst温暖”, “在里杰斯特的公寓里” ], “Benodigdheden”:[{ “Hoeveelheid”:“

我已经创建了一个连接到数据库的PHP接口,通过在PHP中编码JSON并在C#上使用JSON.NET对其进行解码。 到目前为止,一切都很顺利。 我使用了几个类,这些类都是为了与JSON.NET一起使用而创建的

{
“接受”:“1”,
“Naam”:“Rijst遇见ragout”,
“GramPerPersoon”:“280”,
“类型”:“Eten”,
“指示”:[
“Maak rijst温暖”,
“在里杰斯特的公寓里”
],
“Benodigdheden”:[{
“Hoeveelheid”:“70”,
“伊恩海德”:“克”,
“成分”:{
“成分id”:“1”,
“Naam”:“Rijst”,
“Beschrijving”:“Rijst应该是所有的格拉森家庭成员。Rijst是在温热街上的一个家庭成员,
“能源”:“355”,
“Vetten”:“0.5”,
“VerzadigdeVetten”:“0.2”,
“KoolHydraten”:“79”,
“艾维顿”:“7.5”
}
}, {
“Hoeveelheid”:“30”,
“伊恩海德”:“克”,
“成分”:{
“成分id”:“2”,
“Naam”:“Ragout”,
“Beschrijving”:“vol au vent(Vlaams)的Ragout(荷兰)是van oorsprong een gerecht,位于saus vis的gevogelte,
“能源”:“98”,
“Vetten”:“5.5”,
“VerzadigdeVetten”:“2.2”,
“KoolHydraten”:“3.8”,
“艾维顿”:“8.3”
}
}]

}
您不需要用这些属性装饰您的c#类。根据您发布的json,我已经生成了这些类,我认为这足以反序列化json数据

public class Ingredient
{
    public string Ingredient_id { get; set; }
    public string Naam { get; set; }
    public string Beschrijving { get; set; }
    public string Energie { get; set; }
    public string Vetten { get; set; }
    public string VerzadigdeVetten { get; set; }
    public string KoolHydraten { get; set; }
    public string Eiwitten { get; set; }
}

public class Benodigdheden
{
    public string Hoeveelheid { get; set; }
    public string Eenheid { get; set; }
    public Ingredient Ingredient { get; set; }
}

public class RootObject
{
    public string ReceptId { get; set; }
    public string Naam { get; set; }
    public string GramPerPersoon { get; set; }
    public string Type { get; set; }
    public List<string> Instructies { get; set; }
    public List<Benodigdheden> Benodigdheden { get; set; }
}
公共类成分
{
公共字符串组分\u id{get;set;}
公共字符串Naam{get;set;}
公共字符串Beschrijving{get;set;}
公共字符串Energie{get;set;}
公共字符串Vetten{get;set;}
公共字符串VerzadigdeVetten{get;set;}
公共字符串KoolHydraten{get;set;}
公共字符串Eiwitten{get;set;}
}
公共类Benodigheden
{
公共字符串Hoeveelheid{get;set;}
公共字符串Eenheid{get;set;}
公共成分成分{get;set;}
}
公共类根对象
{
公共字符串接受{get;set;}
公共字符串Naam{get;set;}
公共字符串GramPerPersoon{get;set;}
公共字符串类型{get;set;}
公共列表指示{get;set;}
公共列表benodigheden{get;set;}
}

在看到JSON网站的输出后,我已经找到了答案。 我的Benodigheden数组名为Benodigheden,而数组中有Benodigheid类型的项。 在将数组重命名为BenodigHeid和JSON之后,它成功了!
感谢Felipe Oriani

我试图在Linqpad中重新解决您的问题,导入您的配料类并执行JsonConvert.DeserializeObject(json);其中,json是一个字符串,只包含示例json中的一个成分,无论有无JsonProperty属性(这些属性都是无用的),一切都正常工作。我认为你的问题在别处