【问题标题】:trying to get curly braces in JSON than square brackets试图在 JSON 中获得花括号而不是方括号
【发布时间】:2020-06-04 09:29:47
【问题描述】:

我正在尝试创建以下 JSON 文件。为此,我创建了一个名为 person 的类,然后在该类中创建了一个名为 personDetails 的列表,如下所示:

{
   "typeOfPerson":"",
   "personDetails":{
      "dateOfBirth":"12/20/2019"
   }
}



 public class person
    {


        public string typeOfPerson { get; set; }
        public List<PersonDetails> personDetails { get; set; } = new List<PersonDetails>();

    }

下面是我实现上述 JSON 的代码:

 public void test()
        {
            Person person = new Person();
            person.personDetails.Add(new PersonDetails { dateOfBirth = "12/20/2019" });

            string JSONresult = JsonConvert.SerializeObject(person);
            string jsonFormatted = JValue.Parse(JSONresult).ToString(Formatting.Indented);

        }

我使用上面的代码而不是我想要的代码得到低于 JSON 的代码

{
    "typeOfPerson": null,
    "personDetails": [
        {
            "dateOfBirth": "12/20/2019"
        }
    ]
}

在 personDetails 之后,我想要大括号而不是方括号。使用上面的代码,我得到方括号而不是花括号。

任何帮助将不胜感激。

【问题讨论】:

  • 你不想要public PersonDetails personDetails { get; set; } = new PersonDetails();吗?如果您不想要 JSON 数组,为什么要使用 List

标签: c# json class


【解决方案1】:

方括号表示您的 JSON 属性是一个集合。在您的情况下,它是一个 PersonDetails 列表。花括号表示一个单一的对象,所以你会希望你的班级人是

public class person
{
    public string typeOfPerson { get; set; }
    public PersonDetails personDetails { get; set; }
}

你的测试类看起来像

public void test()
{
    Person person = new Person();
    person.personDetails = new PersonDetails() { dateOfBirth = "12/20/2019" };

    string JSONresult = JsonConvert.SerializeObject(person);
    string jsonFormatted = JValue.Parse(JSONresult).ToString(Formatting.Indented);
}

【讨论】:

    猜你喜欢
    • 2020-07-05
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 2016-07-17
    • 2018-05-14
    • 1970-01-01
    • 1970-01-01
    • 2019-01-26
    相关资源
    最近更新 更多