C# 应为元素';根';从名称空间'';。遇到';无';名称为'';,名称空间'';
我正在尝试反序列化一个简单的json对象C# 应为元素';根';从名称空间'';。遇到';无';名称为'';,名称空间'';,c#,asp.net,json,C#,Asp.net,Json,我正在尝试反序列化一个简单的json对象{“UserID”:1,“VenueID”:14} 我构建了一个类,该类应包含序列化的json字符串,如下所示: public class jsDeserial{ public T jsDeserialize<T>(string jsStr) { DataContractJsonSerializer serJs = new DataContractJsonSerializer(typeof(T));
{“UserID”:1,“VenueID”:14}
我构建了一个类,该类应包含序列化的json字符串,如下所示:
public class jsDeserial{
public T jsDeserialize<T>(string jsStr)
{
DataContractJsonSerializer serJs = new DataContractJsonSerializer(typeof(T));
MemoryStream stream = new MemoryStream(Encoding.UTF8.GetByteCount(jsStr));
T obj = (T)serJs.ReadObject(stream);
stream.Close();
return obj;
}
}
为了启动反序列化,我键入了
protected int VIdentifier
{
get
{
jsonStuff.jsDeserial js = new jsonStuff.jsDeserial();
var vid=js.jsDeserialize<VenueUser>(uD);
return vid.VenueID;
}
}
受保护的int-VIdentifier
{
得到
{
jsonStuff.jsDeserial js=新的jsonStuff.jsDeserial();
var vid=js.jsDeserialize(uD);
返回vid.VenueID;
}
}
uD表示序列化的json数据:{“VenueID”:14,“UserID”:1}
jsonStuff只是一个包含VIdentifier属性的命名空间
无论如何,我得到了以下错误,我无法理解:
应为命名空间“”中的元素“root”…遇到名为“”、命名空间为“”的“None”。不是
Encoding.UTF8.GetByteCount()
只是获取字节数而不是数据?应该会有帮助。我实际上怀疑这是一个重复项是的,它设置了内存流的大小。我之前的评论是针对Barry O'Kane的问题。Barry O'Kane。我非常尴尬。你是对的。我使用了错误的方法。我需要的是GetBytes而不是GetByteCount()非常感谢您这么做。这不是Encoding.UTF8.GetByteCount()吗
只是获取字节数而不是数据?应该会有帮助。我实际上怀疑这是一个重复项是的,它设置了内存流的大小。我之前的评论是针对Barry O'Kane的问题。Barry O'Kane。我非常尴尬。你是对的。我使用了错误的方法。我需要的是GetBytes而不是GetByteCount()非常感谢你。
protected int VIdentifier
{
get
{
jsonStuff.jsDeserial js = new jsonStuff.jsDeserial();
var vid=js.jsDeserialize<VenueUser>(uD);
return vid.VenueID;
}
}