从 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列表的最简单方法是啥[重复]