Voici mon modèle:cadre DataContract ne fonctionne pas lorsque des objets sérialisation JSON
namespace RESTalm
{
[DataContract]
[KnownType(typeof(Entity))]
[KnownType(typeof(Field))]
[KnownType(typeof(Value))]
public class Entities
{
[DataMember(IsRequired = true)]
public List<Entity> entities;
[DataMember(IsRequired = true)]
public int TotalResults;
}
[DataContract]
[KnownType(typeof(Field))]
[KnownType(typeof(Value))]
public class Entity
{
[DataMember(IsRequired = true)]
public Field[] Fields;
[DataMember(IsRequired = true)]
public String Type;
}
[DataContract]
[KnownType(typeof(Value))]
public class Field
{
[DataMember(IsRequired = true)]
public String Name;
[DataMember(IsRequired = true)]
public Value[] values;
}
[DataContract]
[KnownType(typeof(Value))]
public class Value
{
[DataMember(IsRequired = true)]
public String value;
}
}
Voici mon programme:
private String toJSON(Object poco)
{
String json;
DataContractJsonSerializer jsonParser = new DataContractJsonSerializer(poco.GetType());
MemoryStream buffer = new MemoryStream();
jsonParser.WriteObject(buffer, poco);
StreamReader reader = new StreamReader(buffer);
json = reader.ReadToEnd();
reader.Close();
buffer.Close();
return json;
}
Lorsque l'objet jsonParser
initialise il ne semble pas reconnaître mon modèle du tout. Ceci conduit à MemoryStream()
vide. S'il vous plaît aider.
P.S. J'ai éliminé les exceptions dans mon programme parce que c'est distrayant. Merci. En outre, pour l'instant l'objet poco
est toujours supposé être un type dans mon modèle.
Et oui; ils sont tous dans le même espace-nom et ont toutes les références nécessaires. – Olivier10178
Il semble que vous devez revenir en arrière le flux au début en remettant à zéro le [ 'position'] (https://msdn.microsoft.com/en-us/library/system.io.stream.position.aspx) avant peut en lire. – dbc
@dbc vous génial, je t'aime. – Olivier10178