如何将以下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

对于如何将其表示为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 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; }
    }