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

我无法在 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,则需要在使用流之前刷新它。

https://stackoverflow.com/questions/2668626/

相关文章:

ruby-on-rails - rails : Render Json Status Problem

java - 仅使用字符串和值解析 JSON 对象

json - 如何使用 Elasticsearch 搜索嵌套对象

java - 在java中查询一个JSONObject

javascript - 在 Node.js 下存储 JSON 的简单方法

javascript - D3 - 如何处理 JSON 数据结构?

c# - Web API 复杂参数属性全部为空

java - 如何使用 Jackson json 注释枚举字段以进行反序列化

json - 服务器响应在中途被切断

json - 使用 HTTPie 发送嵌套的 JSON 对象