Как правильно десериализовать JSON? - C#

Узнай цену своей работы

Формулировка задачи:

Подскажите, что я делаю не так?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;
 
namespace ConsoleApplication3
{
    class Program
    {
        static void Main(string[] args)
        {
            string json = "{\"success\":true,\"price_prefix\":\"\",\"price_suffix\":\" pуб.\",\"prices\":[[\"Jul 15 2015 16: +0\",1.745,\"6\"],[\"Jul 15 2015 17: +0\",1.78,\"5\"],[\"Jul 15 2015 18: +0\",1.65,\"7\"]]}";
            Newtonsoft.Json.Linq.JObject obj = Newtonsoft.Json.Linq.JObject.Parse(json);
            Price[] objArr = JsonConvert.DeserializeObject<Price[]>(obj["prices"].ToString());
            foreach (Price Obj in objArr)
            {
                Console.WriteLine("Date: {0}", Obj.date);
                Console.WriteLine("Price: {0}", Obj.price);
                Console.WriteLine("Count: {0}", Obj.count);
                Console.WriteLine(new string('-', 10));
            }
            Console.ReadKey(true);
        }
    }
 
    [JsonObject(MemberSerialization.OptIn)]
    struct Price
    {
        public string date { get; set; }
        public string price { get; set; }
        public string count { get; set; }
    }
}

Решение задачи: «Как правильно десериализовать JSON?»

textual
Листинг программы
var prices = JObject.Parse(json)["prices"].Children()
                            .Select(j => new PriceItem
                            {
                                Date = ConvertPriceDate(j[0].ToString()),
                                Price = (float)j[1],
                                Count = (int)j[2]
                            });
...
static DateTime ConvertPriceDate(string s)
{
    return DateTime.ParseExact(s, "MMM dd yyyy HH':' z", CultureInfo.InvariantCulture);
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.714 из 5
Похожие ответы