c# - 在 asp.net 中将 JSON 转换为 .Net 对象时出错

标签 c# asp.net javascript json

我无法在 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/

相关文章:

c# - 使字典访问线程安全?

asp.net - 如何在浏览器(IE、Chrome、Firefox Safari)上点击后退按钮时刷新页面?

c# - 使用 FindControl() 查找控件

c# - LINQ 数据上下文不显示方法

javascript - 如何将数据传递给 page.evaluate 函数?

c# - 如何选择xyz空间中半径内的所有项目?

c# 你如何线程递归目录搜索?

javascript - Bootstrap Off Canvas 显示全高

javascript - 用传递的变量填充 Javascript 二维数组

c# - ASP.NET 核心 2.1。 MVC View 中的 Razor UI 类库