我无法在 asp.net 中将 JSON 字符串转换为 .net 对象。我正在使用隐藏字段将 JSON 字符串从客户端发送到服务器(通过将 JSON object.Tostring() 保留在隐藏字段中并读取文件后面代码中的隐藏字段值)
Json 字符串/对象:
[[{"OfferId":"1","OrderValue":"11","HostingTypeID":"3"},
{"OfferId":"1","OrderValue":"11","HostingTypeID":"3"},
{"OfferId":"1","OrderValue":"11","HostingTypeID":"3"},
{"OfferId":"1","OrderValue":"2","HostingTypeID":"3"},
{"OfferId":"1","OrderValue":"2","HostingTypeID":"3"},
{"OfferId":"1","OrderValue":"67","HostingTypeID":"3"},
{"OfferId":"1","OrderValue":"67","HostingTypeID":"3"}],
[{"OfferId":"1","OrderValue":"99","HostingTypeID":"6"}],
[{"OfferId":"1","OrderValue":"10","HostingTypeID":"8"}]]
.Net 对象
public class JsonFeaturedOffer
{
public string OfferId { get; set; }
public string OrderValue { get; set; }
public string HostingTypeID { get; set; }
}
代码隐藏文件中的转换代码
byte[] byteArray = Encoding.ASCII.GetBytes(HdnJsonData.Value);
MemoryStream stream = new MemoryStream(byteArray);
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(JsonFeaturedOffer));
object result= serializer.ReadObject(stream);
JsonFeaturedOffer jsonObj = result as JsonFeaturedOffer;
转换时出现以下错误:
来自命名空间“”的预期元素“根”。遇到名称为“无”,命名空间“”。
最佳答案
很遗憾,所提出的解决方案都没有解决问题的真正根源。此异常意味着您的反序列化器尝试从流的末尾读取。
解决方案是将流倒回到开头,即。在反序列化之前设置stream.Position = 0;
。
此外,正如评论所述,如果您使用 StreamWriter,则需要在使用流之前刷新它。
关于c# - 在 asp.net 中将 JSON 转换为 .Net 对象时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2668626/