JsonToObject序列化方法

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.Serialization.Json;
using System.Text;
using System.Web;
using System.Web.Script.Serialization;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Default2 : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }



    public static T JSONToObject2<T>(string jsonText)
    {
        JavaScriptSerializer jss = new JavaScriptSerializer();
        try
        {
            return jss.Deserialize<T>(jsonText);
        }
        catch (Exception ex)
        {
            throw new Exception("JSONHelper.JSONToObject(): " + ex.Message);
        }
    }


    public static T JSONToObject<T>(string jsonString)
    {
        using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)))
        {
            return (T)new DataContractJsonSerializer(typeof(T)).ReadObject(ms);
        }
    }
    string str = "[{\"Name\":\"lj\",\"Age\":12,\"Alive\":true,\"FavoriteFilms\":[\"Up\",\"Avatar\"],\"Child\":null},{\"Name\":\"cy\",\"Age\":28,\"Alive\":false,\"FavoriteFilms\":null,\"Child\":{\"Name\":\"lj\",\"Age\":12,\"Alive\":true,\"FavoriteFilms\":[\"Up\",\"Avatar\"],\"Child\":null}}]";

    string str3 = "[{\"Name\":\"lj\",\"Age\":12,\"Alive\":true},{\"Name\":\"xx\",\"Age\":11,\"Alive\":true}]";

    string str2 = "[{'Name':'815bb899-8d70-4745-b799-7e68840a2b34','Age':13,'Alive':true},{'Name':'111222','Age':1555,'Alive':false}]";

    public class Person
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public bool Alive { get; set; }
        public string[] FavoriteFilms { get; set; }
        public Person Child { get; set; }
    }
    public class Person2
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public bool Alive { get; set; }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        
        List<Person2> ps = JsonHelper.JsonStrToObject<List<Person2>>(str2);
        //List<Person2> persons = JSONToObject2<List<Person2>>(str2);

        Response.Write(ps[0].Name + "——" + ps[0].Age);
    }
}



------------------------------------------------------------------------------------------------------------
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.Serialization.Json;
using System.Text;
using System.Text.RegularExpressions;
using System.Web;
using System.Web.Script.Serialization;

/// <summary>
/// JsonHelper 的摘要说明
/// </summary>
public static class JsonHelper
{
    //public JsonHelper()
    //{
        public static T JSONToObject2<T>(string jsonText)
    {
        JavaScriptSerializer jss = new JavaScriptSerializer();
        try
        {
            return jss.Deserialize<T>(jsonText);
        }
        catch (Exception ex)
        {
            throw new Exception("JSONHelper.JSONToObject(): " + ex.Message);
        }
    }


        public static T JSONToObject<T>(string jsonString)
    {
        using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)))
        {
            return (T)new DataContractJsonSerializer(typeof(T)).ReadObject(ms);
        }
    }


    //Json to Object
    public static T JsonStrToObject<T>(this string input)
    {
        //JavaScriptSerializer serializer = new JavaScriptSerializer();
        //serializer.MaxJsonLength = 999999999;
        //input = Regex.Replace(input, @"\\/Date\((\d+)\)\\/", match => { DateTime dt = new DateTime(1970, 1, 1); dt = dt.AddMilliseconds(long.Parse(match.Groups[1].Value)); dt = dt.ToLocalTime(); return dt.ToString("yyyy-MM-dd HH:mm:ss"); });
        //return serializer.Deserialize<T>(input);

        var json = Regex.Replace(
            input,
            @":new Date\((\d+)\)",
            match =>
            {
                var datetime = new DateTime(0x7b2, 1, 1).AddMilliseconds(long.Parse(match.Groups[1].Value)).ToLocalTime();
                var output = ":\"" + datetime.ToString("yyyy-MM-ddTHH:mm:ss.fff") + "\"";
                return output;
            });
        var serializer = new JavaScriptSerializer() { MaxJsonLength = 0x3b9ac9ff };

        json = Regex.Replace(json, @"\\/Date\((\d+)\)\\/", match => { DateTime dt = new DateTime(1970, 1, 1); dt = dt.AddMilliseconds(long.Parse(match.Groups[1].Value)); dt = dt.ToLocalTime(); return dt.ToString("yyyy-MM-dd HH:mm:ss"); });

        var entity = serializer.Deserialize<T>(json);
        return entity;
    }

    //}
}

 

#region AddToContents
        [WebMethod]
        public List<Person2> AddToContents(string strContents)
        {
            object objRealWX = JSONHelp.JsonStrToObject<List<Person2>>(strContents);
            List<Person2> objs = new List<Person2>();

            List<Person2> objRealWX1 = strContents.JsonStrToObject<List<Person2>>(); //JSONHelp.JsonStrToObject<List<Person2>>(strContents);

            for (int i = 0; i < objRealWX1.Count; i++)
            {
                objs.Add(objRealWX1[i]);  
            }
            return objs;
}

 

posted @ 2016-08-11 09:10  iDennis  阅读(9084)  评论(0编辑  收藏  举报