Json-парсер, есть ли готовые библиотеки - C#

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

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

Здравствуйте, товарищи. Помогите разобраться с такой задачей: Есть вот такая штука:
{
"data": [
   { "index": "0", 
     "serviceClass": "Эконом", 
      "prices": [3075,70,80], 
      "eTicketing": true, 
      "segments": [
            { "indexSegment": "0", 
               "stopsCount": "0", 
               "flights": [
                     { "index": "0", 
                        "time": 
                        "PT2H", 
                        "minAvailSeats": "4", 
                        "flightLegs": [
                               { "flightNo": "138", 
                                  "eTicketing": true, 
                                  "airplane": "Boeing 737", 
                                  "airline": "Кубань", 
                                  "airlineCode": "GW", 
                                  "from": {
                                            "code": "VKO", 
                                            "airport": "Внуково", 
                                            "city": "Москва", 
                                            "country": "Россия", 
                                            "countryCode": "RU", 
                                            "terminal": ""}, 
                                  "to": {
                                             "code": "KRR", 
                                             "airport": "Пашковская", 
                                             "city": "Краснодар", 
                                             "country": "Россия", 
                                             "countryCode": "RU", 
                                             "terminal": ""}, 
                        "fromDate": "2012-01-04", 
                        "fromTime": "08:10:00", 
                        "toDate": "2012-01-04", 
                        "toTime": "10:10:00", 
                        "flightClass": "ECONOMY", 
                        "fareBasis": "SSXOW", 
                        "availSeats": 4, 
                        "classCode": "S" 
                  }], 
"stops": [] }] }] }]}
и таких констукций внутри data штук этак 40, Подскажите каким образом достать из всего этого добра значение ну скажем prices , city , ну никак не получается... Я пробую использовать JSON.Net, получается только для простеньких конструкций , например так:
    private void button1_Click(object sender, EventArgs e)
        {
        string json =  @"{
                        ""index"": ""0"", ""serviceClass"": ""Эконом""
                         }";
            JObject o = JObject.Parse(json);
            string index = (string)o["index"];
            MessageBox.Show(index);
        }
но что делать с этой огромной конструкцией не пойму... может быть подскажете другую библиотеку для такой задачки , желательно немного объяснив как это сделать. Спасибо.

Решение задачи: «Json-парсер, есть ли готовые библиотеки»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Newtonsoft;
using Newtonsoft.Json;
using Newtonsoft.Json.Bson;
using Newtonsoft.Json.Converters;
using System.IO;
using Newtonsoft.Json.Linq;
 
[JsonObject]
public struct JsonUserObejct
{
    [JsonProperty]
    public string id
    {
        get;
        set;
    }
 
 
    [JsonProperty]
    public Frs[] frs
    {
        get;
        set;
    }
 
    [JsonProperty]
    public Trps1[] trps
    {
        get;
        set;
    }
 
     [JsonProperty]
    public int frsCnt
    {
        get;
        set;
    }
 
    [JsonProperty]
    public Rates rates
    {
        get;
        set;
    }
 
    [JsonProperty]
    public GdsInfs[] gdsInfs
    {
        get;
        set;
    }
      
*********************PLANES****************************
    [JsonProperty]
    public Planes planes
    {
        get;
        set;
    }
*******************************************************
 
    [JsonProperty]
    public Timings timings
    {
        get;
        set;
    }
}
 
[JsonObject(MemberSerialization.OptIn)]
public struct Trps1
{
    [JsonProperty]
    public string stDt
    {
        get;
        set;
    }
 
    [JsonProperty]
    public string stTm
    {
        get;
        set;
    }
 
    [JsonProperty]
    public string endTm
    {
        get;
        set;
    }
 
    [JsonProperty]
    public string airCmp
    {
        get;
        set;
    }
 
    [JsonProperty]
    public string fltNm
    {
        get;
        set;
    }
 
    [JsonProperty]
    public bool conx
    {
        get;
        set;
    }
 
    [JsonProperty]
    public string stTrm
    {
        get;
        set;
    }
 
    [JsonProperty]
    public string endTrm
    {
        get;
        set;
    }
 
    [JsonProperty]
    public string fltTm
    {
        get;
        set;
    }
 
    [JsonProperty]
    public string jrnTm
    {
        get;
        set;
    }
 
    [JsonProperty]
    public bool confrm
    {
        get;
        set;
    }
 
    [JsonProperty]
    public string plane
    {
        get;
        set;
    }
 
    [JsonProperty]
    public bool eTkAvail
    {
        get;
        set;
    }
 
    [JsonProperty]
    public string avlSrc
    {
        get;
        set;
    }
 
    [JsonProperty]
    public int miles
    {
        get;
        set;
    }
 
    [JsonProperty]
    public int age
    {
        get;
        set;
    }
 
    [JsonProperty]
    public bool ageAbs
    {
        get;
        set;
    }
 
    [JsonProperty]
    public int stars
    {
        get;
        set;
    }
 
    [JsonProperty]
    public FlightInfo flightInfo
    {
        get;
        set;
    }
 
    [JsonProperty]
    public string key
    {
        get;
        set;
    }
 
}
 
[JsonObject(MemberSerialization.OptIn)]
public struct FlightInfo
{
    [JsonProperty]
    public FirstType ages
    {
        get;
        set;
    }
 
    [JsonProperty]
    public FirstType delay
    {
        get;
        set;
    }
 
    [JsonProperty]
    public SecondType delay15
    {
        get;
        set;
    }
 
    [JsonProperty]
    public SecondType delay30
    {
        get;
        set;
    }
 
    [JsonProperty]
    public FirstType late
    {
        get;
        set;
    }
 
    [JsonProperty]
    public FirstType cancelled
    {
        get;
        set;
    }
 
    [JsonProperty]
    public SecondType seatsmaxPE
    {
        get;
        set;
    }
 
    [JsonProperty]
    public SecondType seatsminPE
    {
        get;
        set;
    }
 
    [JsonProperty]
    public FirstType seatPitch
    {
        get;
        set;
    }
}
 
[JsonObject(MemberSerialization.OptIn)]
public struct FirstType
{
    [JsonProperty]
    public int stars
    {
        get;
        set;
    }
 
    [JsonProperty]
    public int value
    {
        get;
        set;
    }
 
}
 
[JsonObject(MemberSerialization.OptIn)]
public struct SecondType
{
    [JsonProperty]
    public int value
    {
        get;
        set;
    }
 
    [JsonProperty]
    public int stars
    {
        get;
        set;
    }
 
}
 
[JsonObject(MemberSerialization.OptIn)]
public struct Rates
{
    [JsonProperty]
    public string USDEUR
    {
        get;
        set;
    }
 
    [JsonProperty]
    public string USDRUB
    {
        get;
        set;
    }
 
    [JsonProperty]
    public string USDUAH
    {
        get;
        set;
    }
 
    [JsonProperty]
    public string EURUSD
    {
        get;
        set;
    }
 
 
    [JsonProperty]
    public string EURUAH
    {
        get;
        set;
    }
 
    [JsonProperty]
    public string RUBUSD
    {
        get;
        set;
    }
 
    [JsonProperty]
    public string RUBEUR
    {
        get;
        set;
    }
 
    [JsonProperty]
    public string RUBUAH
    {
        get;
        set;
    }
 
    [JsonProperty]
    public string UAHUSD
    {
        get;
        set;
    }
 
 
    [JsonProperty]
    public string UAHRUB
    {
        get;
        set;
    }
 
}
 
[JsonObject(MemberSerialization.OptIn)]
public struct GdsInfs
{
    [JsonProperty]
    public string areRulesRequestId
    {
        get;
        set;
    }
 
    [JsonProperty]
    public string hash
    {
        get;
        set;
    }
}
 
[JsonObject(MemberSerialization.OptIn)]
public struct Timings
{
    [JsonProperty]
    public string start
    {
        get;
        set;
    }
 
    [JsonProperty]
    public int[] timings
    {
        get;
        set;
    }
 
}
 
[JsonObject(MemberSerialization.OptIn)]
public struct Frs
{
    [JsonProperty]
    public int id
    {
        get;
        set;
    }
 
    [JsonProperty]
    public Dirs[] dirs
    {
        get;
        set;
    }
    [JsonProperty]
    public int gdsInf
    {
        get;
        set;
    }
 
    [JsonProperty]
    public string lstTkDt
    {
        get;
        set;
    }
 
    [JsonProperty]
    public PrcInf prcInf
    {
        get;
        set;
    }
 
    [JsonProperty]
    public int stAvl
    {
        get;
        set;
    }
 
    [JsonProperty]
    public InfMsgs[] infMsgs
    {
        get;
        set;
    }
 
    [JsonProperty]
    public string srvCls
    {
        get;
        set;
    }
 
    [JsonProperty]
    public string sourceTypes
    {
        get;
        set;
    }
 
    [JsonProperty]
    public int rqId
    {
        get;
        set;
    }
 
    [JsonProperty]
    public int dirsCnt
    {
        get;
        set;
    }
 
    [JsonProperty]
    public int fid
    {
        get;
        set;
    }
 
    [JsonProperty]
    public bool sale
    {
        get;
        set;
    }
 
    [JsonProperty]
    public string frKey
    {
        get;
        set;
    }
 
}
 
[JsonObject(MemberSerialization.OptIn)]
public struct Dirs
{
    [JsonProperty]
    public int id
    {
        get;
        set;
    }
 
    [JsonProperty]
    public Trps[] trps
    {
        get;
        set;
    }
 
    [JsonProperty]
    public string jrnTm
    {
        get;
        set;
    }
 
    [JsonProperty]
    public string bg
    {
        get;
        set;
    }
 
}
 
[JsonObject(MemberSerialization.OptIn)]
public struct Trps
{
    [JsonProperty]
    public int id
    {
        get;
        set;
    }
 
    [JsonProperty]
    public string cls
    {
        get;
        set;
    }
 
    [JsonProperty]
    public string srvCls
    {
        get;
        set;
    }
 
    [JsonProperty]
    public int stAvl
    {
        get;
        set;
    }
 
    [JsonProperty]
    public string avlSrc
    {
        get;
        set;
    }
 
    [JsonProperty]
    public bool eTkAvail
    {
        get;
        set;
    }
 
}
 
[JsonObject(MemberSerialization.OptIn)]
public struct PrcInf
{
    [JsonProperty]
    public int adtB
    {
        get;
        set;
    }
 
    [JsonProperty]
    public int adtT
    {
        get;
        set;
    }
 
    [JsonProperty]
    public string cur
    {
        get;
        set;
    }
 
    [JsonProperty]
    public int mkup
    {
        get;
        set;
    }
 
    [JsonProperty]
    public int amt
    {
        get;
        set;
    }
 
    [JsonProperty]
    public int markupNew
    {
        get;
        set;
    }
 
    [JsonProperty]
    public int discount
    {
        get;
        set;
    }
 
    [JsonProperty]
    public int adtM
    {
        get;
        set;
    }
 
    [JsonProperty]
    public int adtMarkupNew
    {
        get;
        set;
    }
 
    [JsonProperty]
    public int adtDiscoun
    {
        get;
        set;
    }
 
    [JsonProperty]
    public int cnnM
    {
        get;
        set;
    }
 
    [JsonProperty]
    public int cnnMarkupNew
    {
        get;
        set;
    }
 
    [JsonProperty]
    public int cnnDiscount
    {
        get;
        set;
    }
 
    [JsonProperty]
    public int infM
    {
        get;
        set;
    }
 
    [JsonProperty]
    public int infMarkupNew
    {
        get;
        set;
    }
 
    [JsonProperty]
    public int infDiscount
    {
        get;
        set;
    }
 
    [JsonProperty]
    public int adtA
    {
        get;
        set;
    }
 
    [JsonProperty]
    public int cnnA
    {
        get;
        set;
    }
 
    [JsonProperty]
    public int infA
    {
        get;
        set;
    }
 
}
 
[JsonObject(MemberSerialization.OptIn)]
public struct InfMsgs
{
    [JsonProperty]
    public string tp
    {
        get;
        set;
    }
 
    [JsonProperty]
    public string cd
    {
        get;
        set;
    }
 
    [JsonProperty]
    public string msg
    {
        get;
        set;
    }
 
}
 
[JsonObject(MemberSerialization.OptIn)]
public struct pmtVrnts
{
    [JsonProperty]
    public string tag
    {
        get;
        set;
    }
 
    [JsonProperty]
    public Transactions[] transactions
    {
        get;
        set;
    }
 
    [JsonProperty]
    public PassengersCount[] passengersCount
    {
        get;
        set;
    }
}
 
[JsonObject(MemberSerialization.OptIn)]
public struct Transactions
{
 
    [JsonProperty]
    public string paySystem
    {
        get;
        set;
    }
 
    [JsonProperty]
    public string cur
    {
        get;
        set;
    }
 
    [JsonProperty]
    public int adtA
    {
        get;
        set;
    }
 
    [JsonProperty]
    public int cnnA
    {
        get;
        set;
    }
 
    [JsonProperty]
    public int infA
    {
        get;
        set;
    }
 
    [JsonProperty]
    public int adtC
    {
        get;
        set;
    }
 
    [JsonProperty]
    public int cnnC
    {
        get;
        set;
    }
 
    [JsonProperty]
    public int infC
    {
        get;
        set;
    }
 
    [JsonProperty]
    public int total
    {
        get;
        set;
    }
 
}
 
[JsonObject(MemberSerialization.OptIn)]
public struct PassengersCount
{
    [JsonProperty]
    public int adtCount
    {
        get;
        set;
    }
 
    [JsonProperty]
    public int cnnCount
    {
        get;
        set;
    }
 
    [JsonProperty]
    public int infCount
    {
        get;
        set;
    }
}
 
namespace _12trip_parser
{
    class Program
    {
        static void Main(string[] args)
        {
            string jsonFileName = @"c:\json3.json";
            string jsonObj = File.ReadAllText(jsonFileName, Encoding.UTF8);
            JsonUserObejct jUserObject = JsonConvert.DeserializeObject<JsonUserObejct>(jsonObj);
            Console.WriteLine("Какойто там id:" +
        (jUserObject.frs[0].id));
            Console.WriteLine("Еще какая-то хурмень:" +
        (jUserObject.frs[8].dirs[0].trps[0].cls));
            Console.WriteLine("Еще какая-то хурмень2:" +
     (jUserObject.trps[8].stDt));
            Console.ReadKey(true);
        }
    }
}

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


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

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

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