JSON序列化与反序列化方法分析

JSON序列化与反序列化方法分析
复制代码代码如下所示:
X
用于向客户机发送的JSON序列化
X
Public static string ToJsJson (this object item)
{

datacontractjsonserializer序列化程序=新datacontractjsonserializer(item.gettype());

使用(MemoryStream MS =新MemoryStream())
{

serializer.writeobject(MS项目);

StringBuilder某人新的StringBuilder();

某人(encoding.utf8.getstring(ms.toarray append()));

返回sb.tostring();

}

}

X
JSON / / /反序列化接收客户端后用来生成相应的JSON对象
X
公共静态T FromJsonTo(这个字符串jsonstring)
{

datacontractjsonserializer SER =新datacontractjsonserializer(typeof(t));

凯迪网络最新MemoryStream(encoding.utf8.getbytes(jsonstring));

T JSONObject =(t)ser.readobject(MS);

Close女士();

返回JSONObject;

}

实体类
复制代码代码如下所示:
{ DataContract }
testobj公共类
{
{ DataMember }
公共字符串使;get;set;}
{ DataMember }
公共字符串模型{ get;set;}
{ DataMember }
公共int年;get;set;}
{ DataMember }
公共字符串颜色{ get;set;}
}

------------------ Javascript获取JSON --------------------

调用测试代码
复制代码代码如下所示:
$(# getJSON)。Click(function(){)
$ ajax({
网址:getjsonhandler .ashx
类型:' ',
数据:{ },
DataType:'json,
超时时间:1000,
错误函数(XMLHttpRequest,textstatus,errorthrown){ alert(textstatus)},
成功:函数(结果){

警报(结果,制造);
警报(结果,模型);
警报(结果);
警报(结果,颜色);
}

});
});

C #背景生成代码
复制代码代码如下所示:
公共课getjsonhandler:IHttpHandler
{
public void ProcessRequest(HttpContext上下文)
{
testobj obj =新testobj();

obj.make =让价值;
obj.model = 模式的价值;
obj.year = 999;
obj.color =颜色值;

context.response.write(obj.tojsjson());
}
公共布尔方法
{
得到
{
返回false;
}
}
}

返回值是颜色是值

----------------- C #产生的JSON对象

调用测试代码
复制代码代码如下所示:
$(# postjson)。Click(function(){)

无功m_obj = {:道奇),型号:凤冠R / T
无功jsonstr = json.stringify(m_obj); / / JSON字符串生成json2.js

$ ajax({
网址:postjsonhandler .ashx
类型:'post,
数据:{ postjson:jsonstr },
DataType:'json,
超时时间:1000,
错误:函数(XMLHttpRequest,textstatus,errorthrown){ alert(textstatus)},
成功:函数(结果){

警报(结果,成功);
}

});
});

C #背景生成代码
复制代码代码如下所示:
公共课postjsonhandler:IHttpHandler
{
public void ProcessRequest(HttpContext上下文)
{
字符串jsonstr =语境。请求{postjson};

testobj obj = jsonstr.fromjsonto();

如果(string.isnullorempty(obj。使)| | string.isnullorempty(对象模型)string.isnullorempty(obj。颜色)| |

| | obj.year<0)
{
context.response.write({成功:假} );
}
其他的
{
context.response.write({成功:true} );
}

公共布尔方法
{
得到
{
返回false;
}
}
}

当我们使用JSON时,我们需要注意,当服务器最终生成JSON字符串时,我们必须注意用包装字符串。否则,当客户端收到它时,它肯定会报告错误,并根据JSON字符串生成对象,这些字符串是根据相应的名称分配的,或多或少不会被报告。
免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部