Web 程序前后台关于JSON 的应用(序列化、反序列化)
-
- Web前端JSON对象与JSON对象之间的相互转换
- Web前端JSON对象的操作(新建、修改、删除、查询)
类与JSON字符串之间的相互转换
在类上打上标签:[DataContract]
在属性上打上标签:[DataMember]
类与JSON字符串的序列化与反序列化方法:
static public class JsonFunction
{
public static string ToJson<T>(this T obj)
{
var ds = new DataContractJsonSerializer(typeof(T));
var ms = new MemoryStream();
ds.WriteObject(ms, obj);
var strJson = Encoding.UTF8.GetString(ms.ToArray());
ms.Close();
return strJson;
}
public static T Deserialize<T>(this string sJson) where T : class
{
var ds = new DataContractJsonSerializer(typeof(T));
var ms = new MemoryStream(Encoding.UTF8.GetBytes(sJson));
var obj = (T)ds.ReadObject(ms);
ms.Close();
return obj;
}
}
通过上面的方法可以将对象转换成对应的JSON字符串,也可以将JSON字符串转换成对象。
Web前端JSON对象与JSON对象之间的相互转换
很多页面上的DOM操作我们是需要记录状态的,比如产品订单选择,我们需要记录当前选择产品的型号,数量等。使用JSON可以帮助我们记录当前的状态。
我们需要将JS上的JSON字符串转换成JS的JSON对象。通过对象的操作可以方便进行操作。
var str = $("#txtDetail").val();
var json = eval('(' + str + ')');
var jsonStr = JSON.stringify(json);
使用” stringify”需要引入一个json.js脚本。
Web前端JSON对象的操作(新建、修改、删除、查询)
新建JSON对象:
// 创建json对象
function CreateJSON(no, price, qty) {
var Detail = {
ProductNO: no,
Price: price,
Qty: qty,
DetailID: id
};
return Detail;
}
// 增加数据
function AddJSON(node) {
var str = $("#txtDetail").val();
var json = eval('(' + str + ')');
json.DetailList.push(node);
var jsonStr = JSON.stringify(json);
$("#txtDetail").val(jsonStr);
}
删除JSON对象
// 删除json
function DeleteJSON(detailId) {
var str = $("#txtDetail").val();
var json = eval('(' + str + ')');
for (var i = 0; i < json.DetailList.length; i++) {
if (json.DetailList[i].DetailID == detailId) {
json.DetailList.splice(i, 1);
break;
}
}
var jsonStr = JSON.stringify(json);
$("#txtDetail").val(jsonStr);
}
获取、修改就可以通过上面的新建、删除JSON方法直接来进行方便的处理。
关键点:
类上打标签[DataContract]、[DataMember]
删除 json.DetailList.splice(i, 1);
添加 json.DetailList.push(node);
下载源代码:文件下载