如何将以下JSON布局表示为C#对象?
对于如何将其表示为C类,我有点困惑。我想将下面的JSON文件反序列化为一个C#类 我有一个想法,但有点迷茫,我想我有点错过了这个想法 到目前为止,我有:如何将以下JSON布局表示为C#对象?,c#,json,C#,Json,对于如何将其表示为C类,我有点困惑。我想将下面的JSON文件反序列化为一个C#类 我有一个想法,但有点迷茫,我想我有点错过了这个想法 到目前为止,我有: public class CountrySetting { public string Name {get;set;} public string Flag {get;set;} } public class Setting { public string Type {get;set;} public string I
public class CountrySetting
{
public string Name {get;set;}
public string Flag {get;set;}
}
public class Setting
{
public string Type {get;set;}
public string Id {get;set;}
public List<LabelSetting> Label {get;set;}
}
public class LabelSetting
{
public string Key {get;set;}
public string Value {get;set;}
}
你在这方面取得了一些进展。以您的课堂配置为例,我将提出以下建议:
public class Country
{
public string Name { get; set; }
public string Flag { get; set; }
}
public class LabelSetting
{
public List<string> Name { get; set; }
public List<Settings> SettingsList { get; set; }
}
public class Settings
{
public string Type { get; set; }
public string Id { get; set; }
public List<string> Label { get; set; }
}
与前面得到的响应一样,使用JsonConvert方法。这是最好的办法
关于,数组中第一个项的
name
属性与第二个对象中的对象不同
[
{
"name": "USA",
(...)
},
{
"name": {
"en": "Layout",
"es": "Diseño"
},
(...)
}
]
虽然这是有效的json,但不能将其反序列化为一个类。
不过,您仍然可以获得这些值
using Newtonsoft.Json.Linq;
(...)
var jArr = JArray.Parse(json);
var one = jArr[0].ToObject<Type1>();
var two = jArr[1].ToObject<Type2>();
我曾经创建过这些对象。您可以使用创建两个具有C#资本化的模型
例如:
public partial class Country
{
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("flag")]
public string Flag { get; set; }
}
显示的JSON是您试图解析的内容的真实表示吗?这是一个具有不同对象定义的对象数组。是什么导致了如此糟糕的JSON?您有一个不同对象的数组。在C#中,
object[]
是不需要进入dynamic
就可以得到的最接近的对象。可能是JSON应该表示的内容的副本?阵列中的两个对象完全不同。
using Newtonsoft.Json.Linq;
(...)
var jArr = JArray.Parse(json);
var one = jArr[0].ToObject<Type1>();
var two = jArr[1].ToObject<Type2>();
public class Country
{
public string name { get; set; }
public string flag { get; set; }
}
public class Name
{
public string en { get; set; }
public string es { get; set; }
}
public class Label
{
public string en { get; set; }
}
public class Setting
{
public string type { get; set; }
public string id { get; set; }
public Label label { get; set; }
}
public class Something
{
public Name name { get; set; }
public List<Setting> settings { get; set; }
}
public static async Task Main(string[] args)
{
var json = @"[
{
""name"": ""USA"",
""flag"": ""usa.jpg"",
},
{
""name"": {
""en"": ""Layout"",
""es"": ""Diseño""
},
""settings"": [
{
""type"": ""checkbox"",
""id"": ""enabled"",
""label"": {
""en"": ""Please Select One or More""
}
}
]
}
]";
var jArr = JArray.Parse(json);
var c = jArr[0].ToObject<Country>();
var s = jArr[1].ToObject<Something>();
Console.WriteLine(c.flag);
Console.WriteLine(s.name.es);
Console.WriteLine(s.settings[0].label.en);
}
usa.jpg
Diseño
Please Select One or More
public partial class Country
{
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("flag")]
public string Flag { get; set; }
}