从 JSON 获取列表 [重复]

Posted

技术标签:

【中文标题】从 JSON 获取列表 [重复]【英文标题】:Get List from JSON [duplicate] 【发布时间】: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
    
  ]

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

【问题讨论】:

为什么一个重复的问题可能是一个否决的问题?我已经解决了这个问题,我无法让逻辑正常工作。 【参考方案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 ***;
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  ***

    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,我从来不知道我们可以使用这个属性。这很有魅力

以上是关于从 JSON 获取列表 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

从JSON格式的字符串创建python列表的最简单方法是啥[重复]

从文件中读取json数据并将t转换为列表的函数[重复]

从arraylist中获取不重复的项目[关闭]

JsonUtility.FromJson 创建列表<对象> [重复]

从本地主机获取 Json [重复]

从服务中检索的日期格式 [重复]