Не распарсивается Json
Мне приходит такой Json
[
{
"command": "settings",
"settings": {
"ajaxPageState": {
"theme": "visionnaire",
"libraries": "better_exposed_filters/auto_submit,better_exposed_filters/general,chosen/drupal.chosen,chosen_lib/chosen.css,classy/base,classy/messages,clientside_validation_jquery/cv.jquery.ckeditor,clientside_validation_jquery/cv.jquery.ife,clientside_validation_jquery/cv.jquery.validate,core/html5shiv,core/normalize,eu_cookie_compliance/eu_cookie_compliance_default,extlink/drupal.extlink,google_analytics/google_analytics,ipe_academy/academy,ipe_global/gsap,ipe_global/scrollmagic,ipe_global/video_widget,ipe_global/vimeo_api,layout_discovery/onecol,system/base,views/views.module,views_ajax_history/history,views_infinite_scroll/views-infinite-scroll,visionnaire/base"
},
"viewsAjaxHistory": {
"renderPageItem": 1
},
"views": {
"ajax_path": "/views/ajax",
"ajaxViews": {
"views_dom_id:216eed0950699a23e8fbaf6d1a2bb9d04f5876be2b4c791fbfb945e9db3affea": {
"view_name": "academy_products",
"view_display_id": "page_1",
"view_args": "",
"view_path": "/products",
"view_base_path": "products",
"view_dom_id": "216eed0950699a23e8fbaf6d1a2bb9d04f5876be2b4c791fbfb945e9db3affea",
"pager_element": 0
}
}
},
"field_group": {
"link": {
"mode": "teaser_academy",
"context": "view",
"settings": {
"id": "",
"classes": "group-node-link",
"target": "entity",
"custom_uri": "",
"target_attribute": "default"
}
}
},
"ajaxTrustedUrl": {
"/products": true
},
"chosen": {
"selector": "select\r\n",
"minimum_single": 0,
"minimum_multiple": 0,
"minimum_width": 0,
"use_relative_width": false,
"options": {
"disable_search": false,
"disable_search_threshold": 0,
"allow_single_deselect": false,
"search_contains": false,
"placeholder_text_multiple": "Choose some options",
"placeholder_text_single": "Choose an option",
"no_results_text": "No results match",
"max_shown_results": null,
"inherit_select_classes": true
}
},
"pluralDelimiter": "\u0003",
"user": {
"uid": 0,
"permissionsHash": "cfae03343fd0f2f97ca90b96788e1e412a2b3acf617dd761995e94583134cfac"
}
},
"merge": true
},
{
"command": "insert",
"method": "infiniteScrollInsertView",
"selector": ".js-view-dom-id-216eed0950699a23e8fbaf6d1a2bb9d04f5876be2b4c791fbfb945e9db3affea",
"data": "<div class=\"view view-academy-products view-id-academy_products view-display-id-page_1 js-view-dom-id-216eed0950699a23e8fbaf6d1a2bb9d04f5876be2b4c791fbfb945e9db3affea\">\n \n \n <div class=\"view-header\">\n Our products are the embodiment of ideas realised by using production techniques derived from different sectors of handicraft, belonging to Italian traditional artisanry. These technologies combine tradition with cutting-edge production processes, characterising our products as unique and top-quality.\r\nThe use of high-end materials and techniques, the craftsmanship and tailor-made philosophy inspiring our handmade production lend on our products those unique features, which make any apparent imperfection or difference an additional distinctive peculiarity.\n </div>\n <div class=\"view-filters\">\n <form class=\"views-exposed-form bef-exposed-form\" data-bef-auto-submit-full-form=\"\" data-bef-auto-submit=\"\" data-bef-auto-submit-delay=\"500\" novalidate=\"novalidate\" data-drupal-selector=\"views-exposed-form-academy-products-page-1\" action=\"/products\" method=\"get\" id=\"views-exposed-form-academy-products-page-1\" accept-charset=\"UTF-8\">\n <div class=\"form--inline clearfix\">\n <div class=\"group-left\"><div class=\"js-form-item form-item js-form-type-select form-type-select js-form-item-field-product-category form-item-field-product-category\">\n <label for=\"edit-field-product-category--18k14eh6ld0\">Product category</label>\n <select data-drupal-selector=\"edit-field-product-category\" id=\"edit-field-product-category--18k14eh6ld0\" name=\"field_product_category\" class=\"form-select\"><option value=\"All\" selected=\"selected\">All category</option><option value=\"9518\">Best sellers</option><option value=\"68\">Accessories</option><option value=\"1911\">Art gallery</option><option value=\"71\">Bar Cabinets</option><option value=\"72\">Beds</option><option value=\"73\">Bedside tables</option><option value=\"75\">Benches, Pouffes</option><option value=\"76\">Bookshelves</option><option value=\"77\">Cabinets</option><option value=\"78\">Cache-pot</option><option value=\"80\">Carpets</option><option value=\"81\">Chairs, Stools, Office chairs</option><option value=\"83\">Chaise-longues, Ottomans</option><option value=\"82\">Chandeliers, Ceiling lamps</option><option value=\"84\">Chest of drawers</option><option value=\"85\">Consoles</option><option value=\"86\">Dehors</option><option value=\"94\">Dining tables</option><option value=\"88\">Doors, Room dividers</option><option value=\"89\">Floor lamps</option><option value=\"90\">Foodroom</option><option value=\"9671\">Iconic</option><option value=\"74\">Low tables, Small tables</option><option value=\"91\">Mirrors</option><option value=\"70\">Single armchairs</option><option value=\"92\">Sofas and Armchairs</option><option value=\"93\">Table lamps</option><option value=\"95\">Vanity units</option><option value=\"97\">Wall lamps</option><option value=\"98\">Wardrobes, Clothes hanger</option><option value=\"99\">Wellness room</option><option value=\"87\">Writing desks</option></select>\n </div>\n</div><div class=\"group-right\"><div class=\"js-form-item form-item js-form-type-select form-type-select js-form-item-field-product-line form-item-field-product-line\">\n <label for=\"edit-field-product-line--XQEZT-7Fgd8\">Product line</label>\n <select data-drupal-selector=\"edit-field-product-line\" id=\"edit-field-product-line--XQEZT-7Fgd8\" name=\"field_product_line\" class=\"form-select\"><option value=\"All\" selected=\"selected\">Product line</option><option value=\"140\">Acanthus</option><option value=\"141\">Acer</option><option value=\"9724\">Adele</option><option value=\"142\">Adler</option><option value=\"9725\">Admeto</option><option value=\"143\">Adone</option><option value=\"144\">Adriano</option><option value=\"1626\">Adventures in the sea</option><option value=\"1572\">Agatha</option><option value=\"4108\">Aggregato n.10</option><option value=\"145\">Agnis</option><option value=\"146\">Agon, Agon Big</option><option value=\"3675\">Agorà</option><option value=\"9761\">Airone</option><option value=\"9778\">Airone Vetro</option><option value=\"3676\">Aironi</option><option value=\"147\">Akelei</option><option value=\"3677\">Akira</option><option value=\"4045\">Akira Abat-jour</option><option value=\"4030\">Alba</option><option value=\"1982\">Albero</option><option value=\"148\">Albion</option><option value=\"9726\">Alcazar</option><option value=\"149\">Aldebaran</option><option value=\"2057\">Aleksandra</option><option value=\"150\">Algol</option><option value=\"2791\">Ali</option><option value=\"3678\">Ali dischiuse</option><option value=\"151\">Alice</option><option value=\"152\">Alien</option><option value=\"153\">Allen</option><option value=\"154\">Alley</option><option value=\"4017\">Alpha</option><option value=\"156\">Alter Ego</option><option value=\"1627\">Aluminum Wall</option><option value=\"3372\">Alveolizzazione</option><option value=\"4107\">Alveolizzazione n.7</option><option value=\"157\">Alwin</option><option value=\"155\">Alyon</option><option value=\"1573\">Alystar</option><option value=\"158\">Amanda</option><option value=\"159\">Amarilli</option><option value=\"160\">Amery</option><option value=\"9727\">Aminta</option><option value=\"9728\">Amos</option><option value=\"3679\">Anael</option><option value=\"3680\">Anastasia</option><option value=\"2690\">Annie</option><option value=\"161\">Antares</option><option value=\"3681\">Anthar</option><option value=\"4010\">Anthem</option><option value=\"2792\">Antilope</option><option value=\"162\">Antinea</option><option value=\"163\">Antinoo</option><option value=\"165\">Apollo</option><option value=\"166\">Appia</option><option value=\"2113\">Arabel</option><option value=\"9729\">Aracea</option><option value=\"167\">Arapey</option><option value=\"3756\">Arbor</option><option value=\"168\">Arcadia</option><option value=\"2691\">Archer</option><option value=\"2058\">Archibald</option><option value=\"2059\">Archinto</option><option value=\"169\">Archos</option><option value=\"170\">Aretusa</option><option value=\"171\">Argante</option><option value=\"172\">Argo</option><option value=\"173\">Arianna</option><option value=\"174\">Ariman</option><option value=\"175\">Arione</option><option value=\"176\">Aristeo</option><option value=\"177\">Arizona</option><option value=\"9730\">Arkady</option><option value=\"2692\">Arkham</option><option value=\"2039\">Armand</option><option value=\"2040\">Armand</option><option value=\"178\">Arnolfo</option><option value=\"179\">Arper</option><option value=\"180\">Artegal</option><option value=\"181\">Artu'</option><option value=\"182\">Arya</option><option value=\"2060\">Ascanio</option><option value=\"2061\">Ascension</option><option value=\"183\">Ashton</option><option value=\"184\">Aslan</option><option value=\"185\">Asoka</option><option value=\"1638\">Aspen</option><option value=\"2127\">Aspen/Al</option><option value=\"3683\">Astra</option><option value=\"2793\">Astratto</option><option value=\"3682\">Astrid</option><option value=\"186\">Atlantis</option><option value=\"187\">Atlas</option><option value=\"188\">Atman</option><option value=\"189\">Aton</option><option value=\"3294\">Atreyu</option><option value=\"190\">Attis</option><option value=\"191\">Audrey</option><option value=\"192\">Augustus</option><option value=\"193\">Aurelia</option><option value=\"2042\">Aurora</option><option value=\"3295\">Auryn</option><option value=\"194\">Avalon</option><option value=\"195\">Avatar</option><option value=\"1988\">Axel</option><option value=\"196\">Aydon</option><option value=\"197\">Aymer</option><option value=\"3298\">Azimut</option><option value=\"2693\">Babylon</option><option value=\"199\">Baccus</option><option value=\"198\">Bach</option><option value=\"3684\">Backstage</option><option value=\"2062\">Baker</option><option value=\"2063\">Bakst</option><option value=\"3685\">Balance</option><option value=\"3686\">Balin, Elmo, Galdor, Tareg</option><option value=\"4065\">Ballet Josef</option><option value=\"4066\">Ballet Marcel</option><option value=\"4064\">Ballet Oskar</option><option value=\"200\">Ballroom</option><option value=\"201\">Balthazar</option><option value=\"202\">Bamboo</option><option value=\"3755\">Bambu</option><option value=\"3687\">Banner</option><option value=\"203\">Barahir</option><option value=\"204\">Barcode</option><option value=\"205\">Barlmoral</option><option value=\"3688\">Barney</option><option value=\"206\">Barnum</option><option value=\"2694\">Barrett</option><option value=\"3306\">Barry</option><option value=\"2695\">Barrymore</option><option value=\"2696\">Bart</option><option value=\"2697\">Basil</option><option value=\"9774\">Bastian</option><option value=\"3990\">Bastian Dual</option><option value=\"3376\">Bastian Still</option><option value=\"207\">Bat</option><option value=\"1575\">Beau Geste</option><option value=\"208\">...",
"settings": null
}
]
Моя задача вытащить data
Тут массив с разными данными внутри, я примерно понял как сделать, но выдает ошибку
class Json_Data
{
[JsonProperty("command")]
public string Command { get; set; }
[JsonProperty("data", NullValueHandling = NullValueHandling.Ignore)]
public string data { get; set; }
}
Десиреализую в лист, т.к у нас массив же
var Html_Json = JsonConvert.DeserializeObject<List<Json_Data>>(request.Result.Content.ReadAsStringAsync().Result);
foreach(var data in Html_Json)
{
Console.WriteLine(data.data);
}
Ошибка
Newtonsoft.Json.JsonSerializationException: Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'System.Collections.Generic.List`1[Margaroli.Parsing+Json_Data]' because the type requires a JSON array (e.g. [1,2,3]) to deserialize correctly.
To fix this error either change the JSON to a JSON array (e.g. [1,2,3]) or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path 'message', line 1, position 11.
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonSerializer.Deserialize(JsonReader reader, Type objectType)
at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value)
at Margaroli.Parsing.Parsing_Catalog(String html) in C:\Users\OneDrive\Рабочий стол\Margaroli34\Margaroli\Parsing.cs:line 64
64 - это десеарилизация
var Html_Json = JsonConvert.DeserializeObject<List<Json_Data>>(request.Result.Content.ReadAsStringAsync().Result);
Ответы (2 шт):
Автор решения: Алексей Селиверстов
→ Ссылка
В json в конце я увидел значок ] что означает что приходит Вам НЕ объект, а МАССИВ Json - что собственно говоря две разные вещи! И вам нужно достать дату не из объекта а из массива, соответственно делать свое приложение исходя из этого.
Автор решения: Blackmeser
→ Ссылка
public class Root
{
public string command { get; set; }
public string data { get; set; }
}
string input = "[{\"command\": \"settings\",\"merge\": true }, { \"command\": \"insert\", \"data\": \"<div\", }]"; //мой пример, вы полностью свой вводите
var r = JsonConvert.DeserializeObject<Root[]>(input);
var data = r.FirstOrDefault(f => f.data != null)?.data ?? string.Empty;
И вот так вы получаете data.