【问题标题】:Get List from JSON [duplicate]从 JSON 获取列表 [重复]
【发布时间】:2021-10-18 14:36:16
【问题描述】:

我正在尝试从第 3 方 API 的 JSON 字符串中获取列表。 我无法理解我应该如何解析它,因为键名以数字开头。 我不需要密钥,但确实需要值,但我需要将代码中的值部分存储在 DB 中。

JSON

{
  "5MIN": [
    {
      "SETTLEMENTDATE": "2021-08-16T00:30:00",
      "REGIONID": "NSW1",
      "REGION": "NSW1",
      "RRP": 39.27,
      "TOTALDEMAND": 7416.02,
      "PERIODTYPE": "ACTUAL",
      "NETINTERCHANGE": -788.69,
      "SCHEDULEDGENERATION": 5518.17,
      "SEMISCHEDULEDGENERATION": 1076.47
    },
    {
      "SETTLEMENTDATE": "2021-08-16T01:00:00",
      "REGIONID": "NSW1",
      "REGION": "NSW1",
      "RRP": 36.51,
      "TOTALDEMAND": 7288.89,
      "PERIODTYPE": "ACTUAL",
      "NETINTERCHANGE": -828.1,
      "SCHEDULEDGENERATION": 5362.3,
      "SEMISCHEDULEDGENERATION": 1064.35
    }
  ]

}

我想我把问题复杂化了,但我很困惑

【问题讨论】:

  • 为什么一个重复的问题可能是一个否决的问题?我已经解决了这个问题,我无法让逻辑正常工作。

标签: c# json .net-core


【解决方案1】:

如上面的 cmets 中所述,您可以将 json 粘贴为代码。 接下来添加对 Newtonsoft.Json 的引用:

dotnet add package newtonsoft.json

然后您调用JsonConvert.Deserialize<T>(),如下例所示:

using System;
using System.Collections.Generic;

using System.IO;
using Newtonsoft.Json;
using StackOverflow;
using System.Linq;

//In this example I load the JSON from disk
var json = File.ReadAllText("/home/timothy/data.json");
var record = JsonConvert.DeserializeObject<ServiceResponse>(json);

//No need to convert to List<T> if you're not going to filter it
var results = record.The5Min.ToList();

foreach(var item in results)
{
    Console.WriteLine($"{item.Settlementdate}, {item.Regionid}");
}

namespace  StackOverflow
{
    using System;
    using System.Collections.Generic;

    using System.Globalization;
    using Newtonsoft.Json;
    using Newtonsoft.Json.Converters;

    public partial class ServiceResponse
    {
        [JsonProperty("5MIN")]
        public The5Min[] The5Min { get; set; }
    }

    public partial class The5Min
    {
        [JsonProperty("SETTLEMENTDATE")]
        public DateTimeOffset Settlementdate { get; set; }

        [JsonProperty("REGIONID")]
        public string Regionid { get; set; }

        [JsonProperty("REGION")]
        public string Region { get; set; }

        [JsonProperty("RRP")]
        public double Rrp { get; set; }

        [JsonProperty("TOTALDEMAND")]
        public double Totaldemand { get; set; }

        [JsonProperty("PERIODTYPE")]
        public string Periodtype { get; set; }

        [JsonProperty("NETINTERCHANGE")]
        public double Netinterchange { get; set; }

        [JsonProperty("SCHEDULEDGENERATION")]
        public double Scheduledgeneration { get; set; }

        [JsonProperty("SEMISCHEDULEDGENERATION")]
        public double Semischeduledgeneration { get; set; }
    }
}

【讨论】:

  • 谢谢@timothyp,我从来不知道我们可以使用这个属性。这很有魅力
猜你喜欢
  • 2017-09-09
  • 2011-08-24
  • 2022-07-09
  • 2013-09-15
  • 1970-01-01
  • 2011-05-09
  • 1970-01-01
  • 2017-08-14
  • 1970-01-01
相关资源
最近更新 更多