Json序列化和反序列化方法解析_Javascript教程-查字典教程网
Json序列化和反序列化方法解析
Json序列化和反序列化方法解析
发布时间:2016-12-30 来源:查字典编辑
摘要:复制代码代码如下://////Json序列化,用于发送到客户端///publicstaticstringToJsJson(thisobjec...

复制代码 代码如下:

/// <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字符串生成对象,是根据对应的名称赋值,多于或少于都不会报错.

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新Javascript教程学习
    热门Javascript教程学习
    编程开发子分类