2014-06-13 3 views
-2

Je tente d'utiliser une API qui retourne la structure JSON suivante:Deserialize JSON Tableau

{ 
    standardList: [2] 
    0: { 
     created: "/Date(1393282097000)/" 
     createdBy: "User Name" 
     envId: "1234-1234-1234" 
     extension: "nbsq" 
     id: "4826-5680-3258" 
     modified: "/Date(1328572097000)/" 
     modifiedBy: "user Name" 
     name: "File Name Here" 
     officialVer: 1 
     size: 1 
     syncMod:357275 
     url: "https://www.example.com" 
     versions: 1 
    }- 
    1: { 
     created: "/Date(139345635000)/" 
     createdBy: "User Name" 
     envId: "2345-2345-2345" 
     extension: "nbsq" 
     id: "4956-4538-4321" 
     modified: "/Date(13934425017000)/" 
     modifiedBy: "User Name" 
     name: "File Name Here" 
     officialVer: 1 
     size: 1 
     syncMod: 2812280243 
     url: "https://www.example.com" 
     versions: 1 
    } 
} 

Je dois désérialiser le contenu du standardList et définir les valeurs id et name. J'ai un modèle:

public class FolderList 
{ 
    [JsonProperty("standardList")] 
    public Folder FolderList { get; set; } 
} 

public class Folder 
{ 
    [JsonProperty("envId")] 
    public string Id {get; set;} 
    [JsonProperty("name")] 
    public string Name {get;set;} 
} 

J'ai essayé de faire comme suggéré here et exécuter

JsonConvert.DeserializeObject<FolderList<Folder>>(json); 

mais cela ne fonctionne pas parce que la réponse ne dispose pas d'une clé standardList pour chaque élément, il est un tableau. Comment désérialiser dans un tableau?

EDIT: JSON Actual

{"standardList":[{"created":"\/Date(13963113097000)\/","createdBy":"User Name","envId":"1234-1234-1234","extension":"nbsq","id":"5326-0160-3098","modified":"\/Date(1396323497000)\/","modifiedBy":"User Name","name":"File Name Here","officialVer":1,"size":1,"syncMod":32350008075,"url":"https:\/\/www.example.com","versions":1},{"created":"\/Date(1334556017000)\/","createdBy":"User Name","envId":"1234-1234-1234","extension":"nbsq","id":"4728-1586-4633","modified":"\/Date(13933576017000)\/","modifiedBy":"User Name","name":"File Name Here","officialVer":1,"size":1,"syncMod":2822280170,"url":"https:\/\/www.example.com","versions":1}]} 
+3

(Il est généralement préférable de signaler/montrer * JSON *, pas une interprétation de celui-ci.) – user2864740

+2

Cette chose de haut n'est pas valide JSON. Pouvez-vous poster le JSON réel et non ce que vous avez copié sur un navigateur ou un outil? – Joe

+0

Vous désérialisez dans un tableau en disposant d'un tableau dans votre modèle C#. Par exemple: 'public Folder [] FolderList {get; set;}'. –

Répondre

2

Aller à Json2csharp.com. passer un certain JSON valide. Référencez les classes générées dans votre projet, puis désérialisez-les. Liez votre JSON d'abord en allant sur jsonlint. Devrait travailler un régal.

+2

Ou dans le studio visuel : Edition -> Collage spécial -> Coller en tant que classes JSON – crashmstr

+0

Merci! Il s'avère que j'avais le mauvais type de données pour la clé syncMod, et que cela générait une exception. Je n'aurais jamais remarqué sans ce site. Quelle belle ressource. –