Erreur lors de la désérialisation JSON pour Objet

J'ai besoin de convertir les données JSON que je l'obtenir à partir d'une API REST et de les convertir au format CSV pour certains analytique. Le problème est que les données JSON ne suivent pas nécessairement le même contenu, donc je ne peux pas définir un type de cartographie. C'est devenu un défi qui prend trop de mon temps. J'ai déjà créé un peu de code, mais ça ne fonctionne pas comme il le jette exception sur cette ligne

var data = JsonConvert.DeserializeObject<List<object>>(jsonData);

L'erreur est:

Informations supplémentaires: Ne peut pas désérialiser l'actuel objet JSON
(par exemple, {"name":"valeur"}) dans le type
'Système.Les Collections.Génériques.Liste`1[Système.Objet] " parce que le type de
nécessite un tableau JSON (par exemple, [1,2,3]) pour désérialiser correctement.

Pour corriger cette erreur soit modifier le JSON d'un tableau JSON (par exemple, [1,2,3]) ou de modifier le désérialisé type de sorte qu'il est normal .NET type (par exemple, pas un type primitif comme entier, pas un type de collection comme un tableau ou une Liste) qui peut être désérialisé à partir d'un objet JSON. JsonObjectAttribute peuvent également être ajoutés à la type pour le forcer à désérialiser à partir d'un objet JSON.

Chemin de 'données', à la ligne 2, la position de 10.

s'il vous plaît laissez-moi savoir ce que je peux faire pour obtenir ce que ça va.

Un échantillon de données serait comme ça, les champs de données peuvent changer très souvent, par exemple, un champ peut être ajouté à la prochaine journée, donc je n'ai pas la liberté de créer un .Net de classe à mapper les données.

{
"data": [
{
"ID": "5367ab140026875f70677ab277501bfa",
"name": "Happiness Initiatives - Flow of Communication/Process & Efficiency",
"objCode": "PROJ",
"percentComplete": 100.0,
"plannedCompletionDate": "2014-08-22T17:00:00:000-0400",
"plannedStartDate": "2014-05-05T09:00:00:000-0400",
"priority": 1,
"projectedCompletionDate": "2014-12-05T08:10:21:555-0500",
"status": "CPL"
},
{
"ID": "555f452900c8b845238716dd033cf71b",
"name": "UX Personalization Think Tank and Product Strategy",
"objCode": "PROJ",
"percentComplete": 0.0,
"plannedCompletionDate": "2015-12-01T09:00:00:000-0500",
"plannedStartDate": "2015-05-22T09:00:00:000-0400",
"priority": 1,
"projectedCompletionDate": "2016-01-04T09:00:00:000-0500",
"status": "APR"
},
{
"ID": "528b92020051ab208aef09a4740b1fe9",
"name": "SCL Health System - full Sitecore implementation (Task groups with SOW totals in Planned hours - do not bill time here)",
"objCode": "PROJ",
"percentComplete": 100.0,
"plannedCompletionDate": "2016-04-08T17:00:00:000-0400",
"plannedStartDate": "2013-11-04T09:00:00:000-0500",
"priority": 1,
"projectedCompletionDate": "2013-12-12T22:30:00:000-0500",
"status": "CPL"
}
]
}
namespace BusinessLogic
{
public class JsonToCsv
{
public string ToCsv(string jsonData, string datasetName)
{
var data = JsonConvert.DeserializeObject<List<object>>(jsonData);
DataTable table = ToDataTable(data); 
StringBuilder result = new StringBuilder();
for (int i = 0; i < table.Columns.Count; i++)
{
result.Append(table.Columns[i].ColumnName);
result.Append(i == table.Columns.Count - 1 ? "\n" : ",");
}
foreach (DataRow row in table.Rows)
{
for (int i = 0; i < table.Columns.Count; i++)
{
result.Append(row[i].ToString());
result.Append(i == table.Columns.Count - 1 ? "\n" : ",");
}
}
return result.ToString().TrimEnd(new char[] {'\r', '\n'});
}
private DataTable ToDataTable<T>( IList<T> data )
{
PropertyDescriptorCollection props = TypeDescriptor.GetProperties(typeof(T));
DataTable table = new DataTable();
for (int i = 0 ; i < props.Count ; i++)
{
PropertyDescriptor prop = props[i];
table.Columns.Add(prop.Name, prop.PropertyType);
}
object[] values = new object[props.Count];
foreach (T item in data)
{
for (int i = 0 ; i < values.Length ; i++)
{
values[i] = props[i].GetValue(item);
}
table.Rows.Add(values);
}
return table;
}
}
}
Avez-vous un exemple de vos données?
J'ai mis à jour la question auprès d'un échantillon de données.
J'obtiens la même erreur à nouveau.
L'exemple JSON que vous avez posté n'est pas corrélée à un seul objet dans votre erreur à la place du tableau, vous êtes en train de jeter.

OriginalL'auteur Payam | 2015-12-18