【问题标题】:Trying to get value in Json String试图在 Json String 中获得价值
【发布时间】:2020-02-12 22:07:54
【问题描述】:

我正在尝试获取特定formName 和所有sduedates(dueDate) 的给定缩写的Json 对象下面给出的值,下面的pros 变量仅给出AbbForms 下的代码。使用以下变量可以得到表格

var pros = JObject.Descendants().OfType<JProperty>().Where(p => p.Name == "Abbforms").Children.ToList();

Json:::

"Abbreviation": "AQ",
"AbbreviationName": "Name1",

"Abbforms": [
  {
    "formName": "A for Partner1",
    "dueDate": [
      {
        "sdueDate": "2021-03-15T00:00:00+00:00",
        "month": "12",

      },
      {
        "sdueDate": "2021-02-16T00:00:00+00:00",
        "month": "11",

      },
      {
        "sdueDate": "2021-01-15T00:00:00+00:00",
         "month": "10",

      },
      {
        "sdueDate": "2020-12-15T00:00:00+00:00",

        "month": "9",

      },
      {
        "sdueDate": "2020-11-16T00:00:00+00:00",

        "month": "8",

      },
      {
        "sdueDate": "2020-10-15T00:00:00+00:00",

        "month": "7",

      }
     {
        "sdueDate": "2020-09-15T00:00:00+00:00",

        "month": "6",

      },
      {
        "sdueDate": "2020-08-17T00:00:00+00:00",

        "month": "5",

      },
      {
        "sdueDate": "2020-07-15T00:00:00+00:00",

        "month": "4",

      },
      {
        "sdueDate": "2020-06-15T00:00:00+00:00",

        "month": "3",

      },
      {
        "sdueDate": "2020-05-15T00:00:00+00:00",

        "month": "2",

      },
      {
        "sdueDate": "2020-04-15T00:00:00+00:00",

        "month": "1",

      }
    ]

【问题讨论】:

  • 这是一个典型的例子,走近路却发现其实是长路。只需反序列化它,让您的生活更轻松。

标签: c# json linq


【解决方案1】:

您可以创建类来表示数据并对其进行反序列化。然后就可以使用LINQ查询数据了。

这些类将代表 JSON。注意 - 属性名称与 JSON 中的字段匹配:

class Data
{
    public string Abbreviation { get; set; }
    public string AbbreviationName { get; set; }

    public List<Form> AbbForms { get; set; }
}

class Form
{
    public string FormName { get; set; }

    public List<Date> dueDate { get; set; }
}

class Date
{
    public DateTime sdueDate { get; set; }
    public string Month { get; set; }
}

将 json 作为字符串加载后,您可以对其进行反序列化:

var data = JsonConvert.DeserializeObject<Data>(json);

现在您可以使用 LINQ 查询数据并取回您想要的表单:

var forms = data.AbbForms.Where(f => f.FormName == "A for Partner1");

您可以进一步研究LINQ,了解如何查询您要查找的特定数据。如果您对此感到困惑,请回来问一个新问题:-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-25
    • 1970-01-01
    • 1970-01-01
    • 2016-04-08
    • 1970-01-01
    • 2017-07-14
    • 2022-01-16
    • 2010-12-21
    相关资源
    最近更新 更多