how to de-serialize JSON data in which Timestamp it-self contains fields?

后端 未结 2 953
别跟我提以往
别跟我提以往 2020-12-20 06:39

I am Unable to map the class with the given JSON data:

{
    \"Meta Data\": {
        \"1. Information\": \"Intraday (15min) open, high, low, close prices an         


        
相关标签:
2条回答
  • 2020-12-20 06:45

    Here's the solution, test included... I generally use this Json Class Jenerator for generating the classes, on occasion you do need to modify the classes it outputs but generally speaking, it's pretty good

    void Main()
    {
        string test = @"{
        ""Meta Data"": {
            ""1. Information"": ""Intraday (15min) open, high, low, close prices and volume"",
            ""2. Symbol"": ""MSFT"",
            ""3. Last Refreshed"": ""2018-09-28 15:45:00"",
            ""4. Interval"": ""15min"",
            ""5. Output Size"": ""Full size"",
            ""6. Time Zone"": ""US/Eastern""
        },
        ""Time Series (15min)"": {
            ""2018-09-28 15:45:00"": {
                ""1. open"": ""114.2800"",
                ""2. high"": ""114.5600"",
                ""3. low"": ""114.2400"",
                ""4. close"": ""114.4800"",
                ""5. volume"": ""2316251""
            },
            ""2018-09-28 15:30:00"": {
                ""1. open"": ""114.4450"",
                ""2. high"": ""114.4500"",
                ""3. low"": ""114.2600"",
                ""4. close"": ""114.2900"",
                ""5. volume"": ""759991""
            },
            ""2018-09-28 15:15:00"": {
                ""1. open"": ""114.3550"",
                ""2. high"": ""114.5200"",
                ""3. low"": ""114.3100"",
                ""4. close"": ""114.4400"",
                ""5. volume"": ""515174""
            }
        }
    }";
    
        JsonConvert.DeserializeObject<Result>(test).Dump();
    
    }
    
    // Define other methods and classes here
    public class MetaData
    {
        [JsonProperty("1. Information")]
        public string Information { get; set; }
    
        [JsonProperty("2. Symbol")]
        public string Symbol { get; set; }
    
        [JsonProperty("3. Last Refreshed")]
        public string LastRefreshed { get; set; }
    
        [JsonProperty("4. Interval")]
        public string Interval { get; set; }
    
        [JsonProperty("5. Output Size")]
        public string OutputSize { get; set; }
    
        [JsonProperty("6. Time Zone")]
        public string TimeZone { get; set; }
    }
    
    public class CandleStick
    {
    
        [JsonProperty("1. open")]
        public string Open { get; set; }
    
        [JsonProperty("2. high")]
        public string High { get; set; }
    
        [JsonProperty("3. low")]
        public string Low { get; set; }
    
        [JsonProperty("4. close")]
        public string Close { get; set; }
    
        [JsonProperty("5. volume")]
        public string Volume { get; set; }
    }
    
    
    public class Result
    {
    
        [JsonProperty("Meta Data")]
        public MetaData MetaData { get; set; }
    
        [JsonProperty("Time Series (15min)")]
        public Dictionary<DateTime, CandleStick> TimeSeries15min { get; set; }
    }
    

    0 讨论(0)
  • 2020-12-20 06:58

    Using the help of Quicktype and a bit of editing, I created these classes:

    public class RootObject
    {
        [JsonProperty("Meta Data")]
        public MetaData MetaData { get; set; }
    
        [JsonProperty("Time Series (15min)")]
        public Dictionary<DateTime, TimeSeriesItem> TimeSeries15Min { get; set; }
    }
    
    public class MetaData
    {
        [JsonProperty("1. Information")]
        public string The1Information { get; set; }
    
        [JsonProperty("2. Symbol")]
        public string The2Symbol { get; set; }
    
        [JsonProperty("3. Last Refreshed")]
        public DateTimeOffset The3LastRefreshed { get; set; }
    
        [JsonProperty("4. Interval")]
        public string The4Interval { get; set; }
    
        [JsonProperty("5. Output Size")]
        public string The5OutputSize { get; set; }
    
        [JsonProperty("6. Time Zone")]
        public string The6TimeZone { get; set; }
    }
    
    public class TimeSeriesItem
    {
        [JsonProperty("1. open")]
        public string The1Open { get; set; }
    
        [JsonProperty("2. high")]
        public string The2High { get; set; }
    
        [JsonProperty("3. low")]
        public string The3Low { get; set; }
    
        [JsonProperty("4. close")]
        public string The4Close { get; set; }
    
        [JsonProperty("5. volume")]
        public long The5Volume { get; set; }
    }
    

    You can deserialize it like so:

    var data = Newtonsoft.Json.JsonConvert.DeserializeObject<RootObject>(json);
    

    Try it online

    0 讨论(0)
提交回复
热议问题