当前位置: 移动技术网 > IT编程>开发语言>.net > ASP.NET JSON字符串与实体类的互转换示例代码

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

2017年12月12日  | 移动技术网IT编程  | 我要评论

炒葱椒鸡 菜系,100万一年利息,总裁校花赖上我

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

复制代码 代码如下:

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 类,一切都好办!

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网