【发布时间】:2017-06-27 10:44:07
【问题描述】:
这是我的模型:
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;
}
}
这是我的程序:
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;
}
当对象jsonParser 初始化时,它似乎根本无法识别我的模型。
这导致空的MemoryStream()。
请帮忙。
附:我在我的程序中删除了异常处理,因为它会分散注意力。谢谢。
此外,目前对象poco 始终被假定为我模型中的一种类型。
【问题讨论】:
-
是的;它们都在同一个命名空间中,并且拥有所有需要的引用。
-
您似乎需要通过重置其
Position将流倒回到开头,然后才能从中读取。 -
@dbc 你真是个天才,我爱你。
标签: c# asp.net json datacontract