Web 程序前后台关于JSON 的应用(序列化、反序列化)

  1.  

    类与JSON字符串之间的相互转换
  2. Web前端JSON对象与JSON对象之间的相互转换
  3. 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);

 

下载源代码:文件下载

posted @ 2010-07-31 11:55  13路易的  阅读(1558)  评论(0编辑  收藏  举报