复制代码 代码如下:
/// <summary>
/// Json序列化,用于发送到客户端
/// </summary>
public static string ToJsJson(this object item)
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(item.GetType());
using (MemoryStream ms = new MemoryStream())
{
serializer.WriteObject(ms, item);
StringBuilder sb = new StringBuilder();
sb.Append(Encoding.UTF8.GetString(ms.ToArray()));
return sb.ToString();
}
}
/// <summary>
/// Json反序列化,用于接收客户端Json后生成对应的对象
/// </summary>
public static T FromJsonTo<T>(this string jsonString)
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
T jsonObject = (T)ser.ReadObject(ms);
ms.Close();
return jsonObject;
}
实体类
复制代码 代码如下:
[DataContract]
public class TestObj
{
[DataMember]
public string make { get; set; }
[DataMember]
public string model { get; set; }
[DataMember]
public int year { get; set; }
[DataMember]
public string color { get; set; }
}
------------------javascript获取Json--------------------
javascript调用测试代码
复制代码 代码如下:
$('#getJson').click(function() {
$.ajax({
url: "getJsonHandler.ashx",
type: 'GET',
data: {},
dataType: 'json',
timeout: 1000,
error: function(XMLHttpRequest, textStatus, errorThrown) { alert(textStatus) },
success: function(result) {
alert(result.make);
alert(result.model);
alert(result.year);
alert(result.color);
}
});
});
C#后台生成代码
复制代码 代码如下:
public class getJsonHandler: IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
TestObj obj = new TestObj();
obj.make = "Make is Value";
obj.model = "Model is Value";
obj.year = 999;
obj.color = "Color is Value";
context.Response.Write(obj.ToJsJson());
}
public bool IsReusable
{
get
{
return false;
}
}
}
//返回值为 {"color":"Color is Value","make":"Make is Value","model":"Model is Value","year":999}
-----------------C#由Json生成对象-----------------------
javascript调用测试代码
复制代码 代码如下:
$('#postJson').click(function() {
var m_obj = { make: "Dodge", model: "Coronet R/T", year: 1968, color: "yellow" };
var jsonStr = JSON.stringify(m_obj); //用Json2.js生成Json字符串
$.ajax({
url: "postJsonHandler.ashx",
type: 'POST',
data: { postjson: jsonStr },
dataType: 'json',
timeout: 1000,
error: function(XMLHttpRequest, textStatus, errorThrown) { alert(textStatus) },
success: function(result) {
alert(result.success);
}
});
});
C#后台生成代码
复制代码 代码如下:
public class postJsonHandler: IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
string jsonStr = context.Request["postjson"];
TestObj obj = jsonStr.FromJsonTo<TestObj>();
if (string.IsNullOrEmpty(obj.make) || string.IsNullOrEmpty(obj.model) || string.IsNullOrEmpty(obj.color)
|| obj.year < 0)
{
context.Response.Write("{success:false}");
}
else
{
context.Response.Write("{success:true}");
}
public bool IsReusable
{
get
{
return false;
}
}
}
使用Json时需要注意,服务器端拼凑生成Json字符串时,一定要注意把字符串用\"\"包裹,不然客户端接收时肯定会报错,根据Json字符串生成对象,是根据对应的名称赋值,多于或少于都不会报错.
Json,序列化,反序列化
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
《魔兽世界》大逃杀!60人新游玩模式《强袭风暴》3月21日上线
暴雪近日发布了《魔兽世界》10.2.6 更新内容,新游玩模式《强袭风暴》即将于3月21 日在亚服上线,届时玩家将前往阿拉希高地展开一场 60 人大逃杀对战。
艾泽拉斯的冒险者已经征服了艾泽拉斯的大地及遥远的彼岸。他们在对抗世界上最致命的敌人时展现出过人的手腕,并且成功阻止终结宇宙等级的威胁。当他们在为即将于《魔兽世界》资料片《地心之战》中来袭的萨拉塔斯势力做战斗准备时,他们还需要在熟悉的阿拉希高地面对一个全新的敌人──那就是彼此。在《巨龙崛起》10.2.6 更新的《强袭风暴》中,玩家将会进入一个全新的海盗主题大逃杀式限时活动,其中包含极高的风险和史诗级的奖励。
《强袭风暴》不是普通的战场,作为一个独立于主游戏之外的活动,玩家可以用大逃杀的风格来体验《魔兽世界》,不分职业、不分装备(除了你在赛局中捡到的),光是技巧和战略的强弱之分就能决定出谁才是能坚持到最后的赢家。本次活动将会开放单人和双人模式,玩家在加入海盗主题的预赛大厅区域前,可以从强袭风暴角色画面新增好友。游玩游戏将可以累计名望轨迹,《巨龙崛起》和《魔兽世界:巫妖王之怒 经典版》的玩家都可以获得奖励。