欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ASP.NET JSON字符串与实体类的互转换示例代码

程序员文章站 2024-02-25 18:52:03
还是先封装一个类吧! 这个类网上都可以找到的!有个这个类,一切都将变得简单了,哈哈。复制代码 代码如下:using system;using system.collecti...

还是先封装一个类吧! 这个类网上都可以找到的!有个这个类,一切都将变得简单了,哈哈。

复制代码 代码如下:

using system;
using system.collections.generic;
using system.linq;
using system.web;
using system.runtime.serialization.json;
using system.servicemodel.web;///记得引用这个命名空间
using system.io;
using system.text;
/// <summary>
/// summary description for jsonhelper
/// </summary>
public class jsonhelper
{
    public jsonhelper()
    {
        //
        // todo: add constructor logic here
        //
    }
    /// <summary>
    /// 把对象序列化 json 字符串
    /// </summary>
    /// <typeparam name="t">对象类型</typeparam>
    /// <param name="obj">对象实体</param>
    /// <returns>json字符串</returns>
    public static string getjson<t>(t obj)
    {
        //记住 添加引用 system.servicemodel.web
        /**
         * 如果不添加上面的引用,system.runtime.serialization.json; json是出不来的哦
         * */
        datacontractjsonserializer json = new datacontractjsonserializer(typeof(t));
        using (memorystream ms = new memorystream())
        {
            json.writeobject(ms, obj);
            string szjson = encoding.utf8.getstring(ms.toarray());
            return szjson;
        }
    }
    /// <summary>
    /// 把json字符串还原为对象
    /// </summary>
    /// <typeparam name="t">对象类型</typeparam>
    /// <param name="szjson">json字符串</param>
    /// <returns>对象实体</returns>
    public static t parseformjson<t>(string szjson)
    {
        t obj = activator.createinstance<t>();
        using (memorystream ms = new memorystream (encoding.utf8.getbytes(szjson)))
        {
            datacontractjsonserializer dcj = new datacontractjsonserializer(typeof(t));
            return (t)dcj.readobject(ms);
        }
    }
}

测试实体类:
复制代码 代码如下:

public class testdata
{
    public testdata()
    {
    }
    public int id { get; set; }
    public string name { get; set; }
    public string sex { get; set; }
}

测试页面:
复制代码 代码如下:

<%@ page language="c#" %>
<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">

<script runat="server">
    protected void page_load(object sender, eventargs e)
    {
        string jsonstr = string.empty;
        list<testdata> tds = new list<testdata>();
        //测试数据
        for (int i = 1; i < 4; i++)
        {
            tds.add(new testdata() { id = i, name = "jinho" + i, sex = "male" });
        }        //把一个list转换为json字符串
        jsonstr = jsonhelper.getjson<list<testdata>>(tds);
        response.write(jsonstr);
        this.page.clientscript.registerstartupscript(this.gettype(), "json", "getjson(" + jsonstr + ");", true);
    }

</script>
<script type="text/javascript">
    function getjson(jsonstr) {        //使用eval函数
        var json = eval(jsonstr);         //因为上面为list集合
        for (var i = 0; i < json.length; i++) {
            alert(json[i].id + "name:" + json[i].name);
        }
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>

    </div>
    </form>
</body>
</html>


关于json字符串转换为实体请各位自己测试吧!只要有上面那个jsonhelper 类,一切都好办!