-1

Je voudrais utiliser C# DataContractJsonSerializer pour désérialiser certains fichiers json dans un type dépourvu d'attributs de sérialisation. Ce type hérite également de plusieurs interfaces avec chaque interface ayant de nombreuses propriétés publiques.DataContractJsonSerializer - désérialisation en classe non attribuée/héritée

Je ne peux pas modifier le type que je tente de désérialiser, ni les interfaces dont il hérite - est ce que j'essaie de faire possible dans C#?

Répondre

1

est ce que j'essaye de faire possible dans C#?

Tout ce que vous avez à faire est d'écrire un petit morceau de code à tester.

DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(CL1)); 
var m = new MemoryStream(Encoding.UTF8.GetBytes(@"{""I1"":""test1"",""I2"":""test2""}")); 
var cl1 = ser.ReadObject(m) as CL1; 
Console.WriteLine(cl1.I1 + " " + cl1.I2); 

Donc, la réponse est OUI

public interface II1 
{ 
    string I1 { set; get; } 
} 
public interface II2 
{ 
    string I2 { set; get; } 
} 
public class CL1 : II1, II2 
{ 
    public string I1 { set; get; } 
    public string I2 { set; get; } 
} 
+0

Merci, je l'ai écrit le code de travail similaire. Je suppose actuellement le problème dans mon instance (après une inspection plus poussée) est que ce type n'a pas de constructeur par défaut. – fusi

+0

@fusi Mieux, utilisez Json.Net, Si ce n'est pas le cas par défaut, il existe plusieurs façons de se connecter au processus de désérialisation. – EZI