错误asp.net转换JSON到.NET对象 [英] Error converting JSON to .Net object in asp.net

查看:150
本文介绍了错误asp.net转换JSON到.NET对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我无法转换成JSON字符串.NET对象在asp.net中。我使用隐藏域(通过隐藏字段保持JSON object.Tostring()和读取隐藏文件code中的隐藏字段的值)发送JSON字符串从客户端到服务器

I am unable to convert JSON string to .net object in asp.net. I am sending JSON string from client to server using hidden field (by keeping the JSON object.Tostring() in hidden field and reading the hidden field value in code behind file)

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; }
}

Converstion code在code隐藏文件

Converstion code in code behind file

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;

虽然转换我收到以下错误:

While converting i am getting following error:

元素期望从命名空间'根'''..遇到无名为'',命名空间'。

Expecting element 'root' from namespace ''.. Encountered 'None' with name '', namespace ''.

推荐答案

而不是这样做的手工,我建议使用内置轻便<一个href=\"http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx\">JavaScriptSerializer. 否属性要求您要序列化类/反序列化。

Instead of doing this manually I would recommend using the built in lightweight JavaScriptSerializer. No attributes are required on the classes you want to serialize/deserialize.

这也是更多的灵活,更快捷比DataContractJsonSerializer,因为它不必在意所有的WCF的东西。此外,它拥有的通用重载,使得使用它很简单,它也可以处理的匿名类型

It's also more flexible and faster than the DataContractJsonSerializer, since it does not have to care about all the wcf stuff. Additionally it has generic overloads that make it very simple to use AND it can also handle anonymous types.

连载:

var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
var objectAsJsonString = serializer.Serialize(objectToSerialize);

反序列化:

var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
JsonFeaturedOffer deserializedObject = serializer.Deserialize<JsonFeaturedOffer>(s_JsonBaseDate);

要使其更容易,你可以创建扩展方法,这将使你JSON序列化/反序列化,直接在对象上/串。

To make it even easier you can create Extension methods that will give you json serialization/deserialization directly on the objects/strings.

这篇关于错误asp.net转换JSON到.NET对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆