Невозможно десериализовать текущий объект JSON (например, {“name”: “value”}) в тип ‘System.Collections.Generic.List`1

using System; using System.Collections.Generic; using System.Linq; using System.Text; using Facebook; using Newtonsoft.Json; namespace facebook { class Program { static void Main(string[] args) { var client = new FacebookClient(acc_ess); dynamic result = client.Get("fql", new { q = "select target_id,target_type from connection where source_id = me()"}); string jsonstring = JsonConvert.SerializeObject(result); //jsonstring {"data":[{"target_id":9503123,"target_type":"user"}]} List datalist = JsonConvert.DeserializeObject<List>(jsonstring); } public class Datum { public Int64 target_id { get; set; } public string target_type { get; set; } } public class RootObject { public List data { get; set; } } } } 

Невозможно десериализовать текущий объект JSON (например, {“name”: “value”}) в тип ‘System.Collections.Generic.List`1 [facebook.Program + RootObject]’, потому что для этого требуется массив JSON (например, [1, 2,3]) для десериализации. Чтобы исправить эту ошибку, либо измените JSON на массив JSON (например, [1,2,3]), либо измените десериализованный тип, чтобы он был обычным типом .NET (например, не примитивным типом типа integer, а не типом коллекции, например массив или список), которые могут быть

Я посмотрел на другие сообщения.

Мой json выглядит так:

 {"data":[{"target_id":9503123,"target_type":"user"}]} 

Чтобы было понятно, в дополнение к ответу @SLaks, это означало, что вам нужно изменить эту строку:

 List datalist = JsonConvert.DeserializeObject>(jsonstring); 

к чему-то вроде этого:

 RootObject datalist = JsonConvert.DeserializeObject(jsonstring); 

Поскольку сообщение об ошибке очень сложно сказать вам, вы не можете десериализовать один объект в коллекцию ( List<> ).

Вы хотите десериализовать в один RootObject .

Это случилось и со мной, потому что я пытался получить IEnumerable но ответ имел единственное значение. Пожалуйста, постарайтесь убедиться, что это список данных в вашем ответе. Линии, которые я использовал (для api url get) для решения проблемы, следующие:

 HttpResponseMessage response = await client.GetAsync("api/yourUrl"); if (response.IsSuccessStatusCode) { IEnumerable rootObjects = awaitresponse.Content.ReadAsAsync>(); foreach (var rootObject in rootObjects) { Console.WriteLine( "{0}\t${1}\t{2}", rootObject.Data1, rootObject.Data2, rootObject.Data3); } Console.ReadLine(); } 

Надеюсь, поможет.

Реальная проблема заключается в том, что вы используете динамический тип возврата в методе GetClickClickClient . И хотя вы используете метод для сериализации, конвертер JSON не может десериализовать этот объект после этого.

Использование insted из:

 dynamic result = client.Get("fql", new { q = "select target_id,target_type from connection where source_id = me()"}); string jsonstring = JsonConvert.SerializeObject(result); 

что-то вроде того:

 string result = client.Get("fql", new { q = "select target_id,target_type from connection where source_id = me()"}).ToString(); 

Затем вы можете использовать метод DeserializeObject :

 var datalist = JsonConvert.DeserializeObject>(result); 

Надеюсь это поможет.

  • Как использовать Json.NET для JSON-моделирования в проекте MVC5?
  • Хранить корпус при сериализации словарей
  • Как использовать JSON.NET для десериализации в вложенный / рекурсивный словарь и список?
  • Json.Net добавляет $ id к объектам EF, несмотря на то, что PreserveReferencesHandling указывает на "None"
  • Серийный объект Json.NET с корневым именем
  • JsonValueProviderFactory выбрасывает «запрос слишком большой»
  • Может ли Json.NET сериализовать / десериализовать в / из streamа?
  • Как я могу разбирать JSON с C #?
  • Можете ли вы определить, был ли объект, десериализованный объект, отсутствием поля с classом JsonConvert в Json.NET
  • Заставить JSON.NET включать миллисекунды при сериализации DateTime (даже если компонент ms равен нулю)
  • Как десериализовать объект JSON с недопустимым именем поля в нем
  • Interesting Posts

    Как включить поддержку jQuery в Aptana Studio 3

    Интеллектуальный способ удаления элементов из списка при перечислении в C #

    Регулярное выражение для asp: RegularExpressionValidator с форматом MMddyy (выпуск високосного года)

    MongoDB GridFs с C #, как хранить файлы, такие как изображения?

    Использование в реальном мире очередей JMS / сообщений?

    Бутстрап – строка, могу ли я добавить столбцы до более 12?

    Карта Java со значениями, ограниченными параметром типа ключа

    Как установить Laravel 4 в подпапку веб-хостинга без публичной публикации / приложения / папки?

    Вставка нескольких строк в mysql

    Приведение C ++ в производный class

    Являются ли словари упорядоченными в Python 3.6+?

    Почему невозможно изменить размер / перемещение монтируемых (не логических) разделов во время выполнения?

    Копирование файла только в том случае, если оно новее, чем место назначения

    Самый быстрый способ найти расстояние между двумя лат / длинными точками

    Сообщение jQuery для Rails

    Давайте будем гением компьютера.