2014-02-12 8 views
1

У меня есть класс, который возвращает строку json, но я хочу обезвредить его в C# List Objects. Мой текущий код выглядит следующим образомDeserialize Json List to C# Объекты списка

public class JsonBuilder 
    { 
     public static string BuildJson(DateTime fromDate, DateTime toDate) 
     { 
      var list = new List<dynamic>(); 

      // create list with json object from service 

      var jsonObjList = JsonConvert.SerializeObject(list); 
      var des = (List<JsonObject>)JsonConvert.DeserializeObject(jsonObjList, typeof(List<JsonObject>)); 

      return JsonConvert.SerializeObject(list); 
     } 

Исключение, когда он пытается десериализации "Сериализированная" JSon снабжать струной, тетивой и т.п.

An exception of type 'Newtonsoft.Json.JsonSerializationException' occurred in Newtonsoft.Json.dll but was not handled in user code 

Additional information: Error converting value 


InnerException: 

{"Could not cast or convert from System.String to MvcWebApp.Models.JsonObject."} 

ответ

1

вы пробовали это:

var des = (List<DeserializeObjects>)JsonConvert.DeserializeObject(jsonObjList, jsonObjList.GetType())); 

или это:

var des = (List<DeserializeObjects>)JsonConvert.DeserializeObject(jsonObjList, typeof(List<dynamic>)); 

еще этот p ОСТ также может помочь вам достичь вашей цели:

Deserialize json object into dynamic object using Json.net

+0

К сожалению, ни один из трюков не работает для меня. Любое предложение? – user2866746

+0

Я нашел решение по вашей ссылке. Большое спасибо. – user2866746

0

попробовать этот

var jsonObjList = JsonConvert.SerializeObject(list); 
dynamic resultList = JsonConvert.DeserializeObject(jsonObjList); 
0

Я хотел бы попробовать с этим class

public class Author 
{ 
    public int id { get; set; } 
    public string slug { get; set; } 
    public string name { get; set; } 
    public string first_name { get; set; } 
    public string last_name { get; set; } 
    public string nickname { get; set; } 
    public string url { get; set; } 
    public string description { get; set; } 
} 

public class CustomFields 
{ 
    public List<string> tags { get; set; } 
} 

public class Post 
{ 
    public int id { get; set; } 
    public string type { get; set; } 
    public string slug { get; set; } 
    public string url { get; set; } 
    public string status { get; set; } 
    public string title { get; set; } 
    public string title_plain { get; set; } 
    public string content { get; set; } 
    public string excerpt { get; set; } 
    public string date { get; set; } 
    public string modified { get; set; } 
    public List<object> categories { get; set; } 
    public List<object> tags { get; set; } 
    public Author author { get; set; } 
    public List<object> comments { get; set; } 
    public List<object> attachments { get; set; } 
    public int comment_count { get; set; } 
    public string comment_status { get; set; } 
    public CustomFields custom_fields { get; set; } 
} 

public class YourObject 
{ 
    public string status { get; set; } 
    public int count { get; set; } 
    public int count_total { get; set; } 
    public int pages { get; set; } 
    public List<Post> posts { get; set; } 
} 

Затем десериализации с этим:

var yourObject = JsonConvert.DeserializeObject<YourObject>(json);