2010-10-16 8 views
2

Je suis vraiment nouveau aussi Json et j'essaye d'appeler un service Web. Lorsque le service retourne un tableau d'un élément de json string pour ce tableau est sans le []. Cela provoque une exception dans le sérialiseur que j'utilise. (Je l'utilise celui-ci http://james.newtonking.com/)C# Désérialisation Json tableau sans []

Ma question est simple que je peux ajouter quelque chose de trop dire à désérialiseur de toujours prendre cette section pour un tableau

Dans mon code, j'ai cette classe modèle

public class Company : BaseEntity 
{ 
    #region Constructors 
    public Company() 
    { 

    } 

    public Company(int id, string name, string description) 
    { 
     Id = id; 
     Name = name; 
     Description = description; 
    } 
    #endregion 

    #region Properties 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string Description { get; set; } 
    public List<Industry> IndustryList { get; set;} 
    #endregion 

} 
Et

JSON pour une entreprise avec une industrie est

{"company":{"description":"Societe de Google","id":"0","industryList":{"id":"0","name":"Technologies Cool"},"name":"Google Inc."} 

Peut-être, je dois changer l'outil serilizer aussi, je suis ouvert aussi. Tout le travail trouve avec une autre liste de 2 ou plusieurs éléments ou si je change la liste pour l'industrie mais parfois je recevrai plus d'une industrie.

Merci.

+0

Quelle exception obtenez-vous? –

+0

Ce comportement est normal pour les services JSON (et je le déteste). Je dirais que vous pourriez considérer comme un bug dans le désérialiseur que vous utilisez - peut-être contacter le créateur du désérialiseur? Peut-être que c'est corrigé dans la version actuelle. –

+0

C'est l'exception que je reçois. Impossible de désérialiser l'objet JSON dans le type 'System.Collections.Generic.List'1 [StockOverflow.Client.Logic.Models.Entities.Industry]'. –

Répondre

3

Faites votre classe

[DataContract] 
public class Company : BaseEntity 
{ 
    #region Constructors 
    public Company() 
    { 

    } 

    public Company(int id, string name, string description) 
    { 
     Id = id; 
     Name = name; 
     Description = description; 
    } 
    #endregion 

    #region Properties 
    [DataMember] 
    public int Id { get; set; } 
    [DataMember] 
    public string Name { get; set; } 
    [DataMember] 
    public string Description { get; set; } 
    [DataMember] 
    public List<Industry> IndustryList { get; set;} 
    #endregion 

} 
+1

Cette solution ne fonctionne pas, le problème n'est pas sur la déseriazaltion elle-même. C'est le json ne contient pas [] pour la liste de l'industrie, car ils ont un seul élément dans cette liste. Donc, dans la progression de la désérialisation, je reçois cette exception: Impossible de désérialiser l'objet JSON dans le type 'System.Collections.Generic.List'1 [StockOverflow.Client.Logic.Models.Entities.Industry]'. –

Questions connexes