2013-02-07 4 views
0

Im utilisant DataContractJsonSerializer pour l'analyse JSON. S'il vous plaît me dire comment analyser ce JSON:Json analyse avec DataContractJsonSerializer

{"response":[2,{"mid":95001,"date":1360173495,"out":0,"uid":32578013,"read_state":0,"title":"Head","body":"message"}, {"mid":95000,"date":1360173439,"out":0,"uid":32506752,"read_state":0,"title":" Theme ","body":"message2"}]} 

Je ne comprends pas ce que la structure dois-je. J'essaie d'écrire ceci:

[DataContract] 
internal class Message 
{ 
    [DataMember] 
    public int IntMember { get; set; } 

    [DataMember] 
    public List<Messages> response { get; set; }   

    [DataContract] 
    protected internal struct Messages 
    { 
     [DataMember] 
     public string mid { get; set; }    
     [DataMember] 
     public string uid { get; set; }    
     [DataMember] 
     public string date { get; set; }   
     [DataMember] 
     public string title { get; set; }  
     [DataMember] 
     public string body { get; set; }  
    } 
} 

Mais cela ne fonctionne pas à cause de 2 au début. Que faire? Supprimer ce numéro avant de l'analyser, ou vous pouvez ignorer comme il est clair?

Répondre

1

Malheureusement, il ne semble pas que vous puissiez utiliser le sérialiseur intégré pour obtenir ce dont vous avez besoin. Le tableau ressemble à inclure un entier comme premier élément qui indique la longueur du tableau, qui n'est pas standard JSON et (comme vous l'avez découvert) signifie que le tableau contient une liste d'éléments hétérogènes.

Vous pouvez avoir plus de chance avec une plus bibliothèque JSON construite à cet effet comme JSON.net

+0

Je voudrais résoudre le problème avec. Net Sérialiser – Milyh

+0

Droit, mais votre JSON n'est pas compatible avec elle, donc vous ne pouvez pas. –

0

question Remercier résolu. Avec l'aide d'expressions régulières trouver « nombre inutile » et supprimer

Si vous avez besoin du numéro lui-même:

@"(?<=response\D*)\d+" 

Si vous avez besoin d'un numéro avec une virgule:

@"(?<=response\D*)\d[^{]*" 

Et puis remplacer

Replace(jsonString, RegEx); 

internet Merci, livre C# 5.0 et le forum CyberForum