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;
}
时间: 2024-11-07 21:16:26

JsonToObject序列化方法的相关文章

JSON数据的序列化方法

ajax传参是json数据对象时,最好是将json对象先序列化 var stuAnswerTotal = examModule.touch.getData('examAnswer'); console.log(stuAnswerTotal);//Object对象如下 { 17072={ "id" : 1702, "type":"1",                "val":["",'"&quo

jquery字符串序列化方法总结

在jquery中字符串序列化方法包括有param() .serialize() .serializeArray(),在这里对其常用做法进行总结. $.param()方法这是serialize()方法的核心,用来对一个数组或对象按照key/value进行序列化. 常用方法: 1 直接传递一个obj,直接转化成key=value然后用&连接起来了 2 $.param({name:'bill',age:18}); 3 结果:name=bill&age=18 4 这里的{X:Y,A:B}会变成X=

C# 的三种序列化方法

序列化是将一个对象转换成字节流以达到将其长期保存在内存.数据库或文件中的处理过程.它的主要目的是保存对象的状态以便以后需要的时候使用.与其相反的过程叫做反序列化. 序列化一个对象 为了序列化一个对象,我们需要一个被序列化的对象,一个容纳被序列化了的对象的(字节)流和一个格式化器.进行序列化之前我们先看看System.Runtime.Serialization名字空间.ISerializable接口允许我们使任何类成为可序列化的类. 如果我们给自己写的类标识[Serializable]特性,我们就

iOS 自动实现对象序列化方法

iOS 中对象序列化,需要遵行NSCoding协议,然后对对象的每个属性进行归档和接档赋值,响应的操作比较繁琐.本文主要介绍 利用 runtime遍历属性 大大简化代码量 具体实现代码如下:1.先建立NSobject的分类, 定义可能用到的相关类型 static NSString *intType = @"i"; // int_32t(枚举int型) static NSString *longTpye = @"l"; //long类型 static NSString

测试用的序列化方法

对于实体,进行底层方法测试的时候,经常逐一赋值很麻烦,网上找到序列化xml方法,感觉挺好用的. 前端调用方法时,将实体序列化写入xml文件 //xml路径 string filePath = @"D:\1.xml"; using (System.IO.StreamWriter writer = new System.IO.StreamWriter(filePath)) { //fileinfo为实体名称 System.Xml.Serialization.XmlSerializer xs

使用反射自定义序列化方法

在使用JSONObject和JSONArray的过程中,往往让人惊叹它的神奇之处,能够很方面的把json对象和bean互相转换,一直在思考究竟后台如何实现的,虽然通过看源码可以得出答案,但毕竟源码过于繁复,短时间内难以尽解,不如自己思考:如果这个功能是我设计的,我会怎么实现呢?其实无非就是使用反射而已,加上循环和迭代,把集合类型和嵌套的对象都迭代出来. 被序列化的类详见:http://blog.csdn.net/salerzhang/article/details/41259471 初始化一个对

django drf 10大请求序列化方法

## 整体单改 路由层.模型层.序列化层不需要做修改,只需要处理视图层:views.py ```python"""1) 单整体改,说明前台要提供修改的数据,那么数据就需要校验,校验的数据应该在实例化“序列化类对象”时,赋值给data2)修改,就必须明确被修改的模型类对象,并在实例化“序列化类对象”时,赋值给instance3)整体修改,所有校验规则有required=True的字段,都必须提供,因为在实例化“序列化类对象”时,参数partial默认为False 注:如果par

分享一个 jquery serializeArray()序列化方法

http://www.365mini.com/page/jquery-serializearray.htm http://www.365mini.com/diy.php?f=jquery-serializearray-demo <form name="myForm" action="http://www.365mini.com" method="post"> <input name="uid" type=&q

c++序列化方法

暂时使用boost 序列化, 目前我的测试基本都ok 只是对于c++11 shared ptr 没有测试成功,只能手工写下shared ptr 部分的序列化,也就是目前我对指针都不直接序列化,自己管理,例如下面样子 Load_(modelFile); //model直接序列化 string normalizerName = read_file(OBJ_NAME_PATH(_normalizer)); if (!normalizerName.empty()) { //由于没有利用shared pt