Парсинг Json строки в объект и массив - C#

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

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

{
   "json":[
      {
         "zayavki":[
            {
               "uuid":"562cea6c-663f-4322-94a3-fd67747209e3",
               "date":"11/06/2012",
               "coment":"",
               "firm_id":"20"
            }
         ]
      },
      {
         "tovar":[
            {
               "uuid":"562cea6c-663f-4322-94a3-fd67747209e3",
               "pricer":"152,
               00               ",
               "kol":"5",
               "st_grup_id":"1885"
            }
         ]
      }
   ]
}
string js = "{ "json" : [ { "zayavki" : [ { "uuid" : "562cea6c-663f-4322-94a3-fd67747209e3" , "date" : "11/06/2012" , "coment" : "" , "firm_id" : "20"} ]},{ "tovar" : [ {"uuid" : "562cea6c-663f-4322-94a3-fd67747209e3" , "pricer" : "152,00" , "kol" : "5" , "st_grup_id" : "1885" } ] } ] }";
 
            try
            {
            
                Newtonsoft.Json.Linq.JObject jObject = Newtonsoft.Json.Linq.JObject.Parse(js);
                Newtonsoft.Json.Linq.JToken json_token = jObject["json"][0];//токен на массив массивов
 
                players = json_token["zayavki"].ToArray();
 
            }
            catch (Exception e)
            {
                
            }
и выдает что то - Newtonsoft.Json.JsonReaderException: JsonToken EndArray is not valid for closing JsonType Object. Path 'json[0].zayavki[0]', line 1, position 140. в Newtonsoft.Json.JsonReader.ValidateEnd(JsonToken endToken) в Newtonsoft.Json.JsonTextReader.ParsePostValue() в Newtonsoft.Json.JsonTextReader.ReadInternal() в Newtonsoft.Json.JsonTextReader.Read() в Newtonsoft.Json.Linq.JContainer.ReadContentFrom(JsonReader r) в Newtonsoft.Json.Linq.JContainer.ReadTokenFrom(JsonReader reader) в Newtonsoft.Json.Linq.JObject.Load(JsonReader reader) в Newtonsoft.Json.Linq.JObject.Parse(String json) в WebService3.Service1.Send_data(String login, String password, String imei, String data) Вопрос что я делаю не так? Мне нужно пройти по массиву zayavki и получать значения итемов.

Решение задачи: «Парсинг Json строки в объект и массив»

textual
Листинг программы
using System;
using Newtonsoft.Json;
 
[JsonObject(MemberSerialization.OptIn)]
struct MyJsonObject
{
    [JsonProperty("uuid")]
    public string Uuid { get; set; }
 
    [JsonProperty("date")]
    public DateTime Date { get; set; }
 
    [JsonProperty("comment")]
    public string Comment { get; set; }
 
    [JsonProperty("firm_id")]
    public string FirmID { get; set; }
}
 
 
class Program
{
    static void Main(string[] args)
    {
        string js = "{ \"json\" : [ { \"zayavki\" : [ { \"uuid\" : " + 
            "\"562cea6c-663f-4322-94a3-fd67747209e3\" , \"date\" " +
            ": \"11/06/2012\" , \"coment\" : \"\" , \"firm_id\" : " + 
            "\"20\"} ]},{ \"tovar\" : [ {\"uuid\" : \"562cea6c-663f-" + 
            "4322-94a3-fd67747209e3\" , \"pricer\" : \"152,00\" , \"kol\" " + 
            ": \"5\" , \"st_grup_id\" : \"1885\" } ] } ] }";
        Newtonsoft.Json.Linq.JObject obj = Newtonsoft.Json.Linq.JObject.Parse(js);
        MyJsonObject[] objArr = JsonConvert.DeserializeObject<MyJsonObject[]>(obj["json"][0]["zayavki"].ToString());
        foreach (MyJsonObject myJsonObj in objArr)
        {
            Console.WriteLine("Uuid: {0}", myJsonObj.Uuid);
            Console.WriteLine("Date: {0}", myJsonObj.Date.ToString("dd/MM/yyyy"));
            Console.WriteLine("Comment: {0}", myJsonObj.Comment);
            Console.WriteLine("FirmID: {0}", myJsonObj.FirmID);
            Console.WriteLine(new string('-', 10));
        }
        Console.ReadKey(true);
    }
}

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


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

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

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