[转][C#]c# 将JSON转化为list实体类,将list实体类转化为JSON字符串

原文地址:http://wo13145219.iteye.com/blog/2022667

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.IO;
using System.Text;
using System.Runtime.Serialization.Json;
using System.Collections.Generic;
using System.Reflection;
using System.Web.Script.Serialization;

namespace AjaxTest
{
    public partial class Json : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //Response.Write(getJsonInfo());
            //string strReg = "\\\\";
            //strReg = strReg.Replace("\\\\", "\\");
            ////Response.Write(strReg);
            //方法一
            Response.Write(disJsonInfo(getObjectByJson(getJsonInfo())));      //方法二
            Response.Write(JsonInfo.getInfo());

        }

        /// <summary>
        /// 获取将实体类转换为json数据(目的是为了更快在网页上传递数据)
        /// </summary>
        /// <returns></returns>
        public string getJsonInfo()
        {
            UserInfo userInfo = new UserInfo();
            //userInfo.strNameInfo = "张三";
            //userInfo.intAgeInfo = 23;
            //userInfo.intTelInfo = 66666;
            //userInfo.strAddrInfo = "北京市";
            //userInfo.strPasswordInfo = "yhx.123";
            userInfo.strName = "张三";
            userInfo.intAge = 23;
            userInfo.strPsd = "yhx.123";
            userInfo.intTel = 2324;
            userInfo.strAddr = "北京市";
            //将对象序列化json
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(UserInfo));
            //创建存储区为内存流
            System.IO.MemoryStream ms = new MemoryStream();
            //将json字符串写入内存流中
            serializer.WriteObject(ms, userInfo);
            System.IO.StreamReader reader = new StreamReader(ms);
            ms.Position = 0;
            string strRes = reader.ReadToEnd();
            reader.Close();
            ms.Close();
            return strRes;
        }

        /// <summary>
        /// 将json数据转换成实体类
        /// </summary>
        /// <returns></returns>
        private static List<UserInfo> getObjectByJson(string jsonString)
        {
            // 实例化DataContractJsonSerializer对象,需要待序列化的对象类型
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(List<UserInfo>));
            //把Json传入内存流中保存
            jsonString = "[" + jsonString + "]";
            MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
            // 使用ReadObject方法反序列化成对象
            object ob = serializer.ReadObject(stream);
            List<UserInfo> ls = (List<UserInfo>)ob;
            return ls;
        }

        /// <summary>
        /// 在页面上显示转换为实体类数据
        /// </summary>
        private string  disJsonInfo(List<UserInfo> us)
        {
            string strItem = "";
            foreach(var item in us )
            {
                strItem += item.strName + ":" + item.strPsd + ":" + item.intAge + ":" + item.intTel + ":" + item.strAddr + "<br/>";
            }
            return strItem;
        }
    }

    /// <summary>
    /// 用户实体类
    /// </summary>
    public class UserInfo
    {
        //用户名
        public string strName { get; set; }
        //年龄
        public int intAge { get; set; }
        //密码
        public string strPsd { get; set; }
        //电话号码
        public int intTel { get; set; }
        //地址
        public string strAddr { get; set; }
    }

    /// <summary>
    /// 将json数据转换成实体类(方法二)
    /// </summary>
    public static class JsonInfo
    {
        /// <summary>
        /// 获取将实体类转换为json数据(目的是为了更快在网页上传递数据)
        /// </summary>
        /// <returns></returns>
        public static string getJsonInfo()
        {
            UserInfo userInfo = new UserInfo();
            userInfo.strName = "张三";
            userInfo.intAge = 23;
            userInfo.strPsd = "yhx.123";
            userInfo.intTel = 2324;
            userInfo.strAddr = "北京市";
            //将对象序列化json
            DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(UserInfo));
            //创建存储区为内存流
            System.IO.MemoryStream ms = new MemoryStream();
            //将json字符串写入内存流中
            serializer.WriteObject(ms, userInfo);
            System.IO.StreamReader reader = new StreamReader(ms);
            ms.Position = 0;
            string strRes = reader.ReadToEnd();
            reader.Close();
            ms.Close();
            return strRes;
        }

        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public static string getInfo()
        {
            string JsonStr = "["+getJsonInfo()+"]";
            List<UserInfo> products;

            products = JsonInfo.JSONStringToList<UserInfo>(JsonStr);

            string strItem = "";
            foreach (var item in products)
            {
                strItem += item.strName + ":" + item.strPsd + ":" + item.intAge + ":" + item.intTel + ":" + item.strAddr + "<br/>";
            }
            return strItem;
        }

        /// <summary>
        /// 返回List集合对象
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="JsonStr"></param>
        /// <returns></returns>
        public static List<T> JSONStringToList<T>(this string JsonStr)
        {

            JavaScriptSerializer Serializer = new JavaScriptSerializer();

            List<T> objs = Serializer.Deserialize<List<T>>(JsonStr);
            return objs;

        }

        /// <summary>
        ///
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="json"></param>
        /// <returns></returns>
        public static T Deserialize<T>(string json)
        {

            T obj = Activator.CreateInstance<T>();

            using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
            {

                DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());

                return (T)serializer.ReadObject(ms);

            }

        }
    }
}
时间: 2024-08-03 12:26:43

[转][C#]c# 将JSON转化为list实体类,将list实体类转化为JSON字符串的相关文章

JSON/XML序列化与反序列化(非构造自定义类)

隔了很长时间再重看自己的代码,觉得好陌生..以后要养成多注释的好习惯..直接贴代码..对不起( ▼-▼ ) 保存保存:进行序列化后存入应用设置里 ApplicationDataContainer _appSettings = ApplicationData.Current.LocalSettings; //这个是保存一些页面输入信息 private async void Save_Click(object sender, RoutedEventArgs e) { if (userName.Tex

【C#公共帮助类】JsonHelper 操作帮助类, 以后再也不用满地找Json了,拿来直接用

 四个主要操作类:JsonConverter .JsonHelper .JsonSplit .AjaxResult 一.JsonConverter: 自定义查询对象转换动态类.object动态类转换json包.json转换object动态类.DataReader转换为Json.DataSet转换为Json.DataTable转成Json.Datatable转换为Json .格式化字符型日期型布尔型.过滤特殊字符等 using System; using System.Collections.Ge

无法解决“Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed”与“Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed”之间的冲突。正在随意选择“Newtonsoft.Jso

今天的程序莫名报错:  无法解决“Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed”与“Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed”之间的冲突.正在随意选择“Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, P

判断JSON是否为空 (用spring mvc @ResponseBody 自动返回的json串 )

判断JSON是否为空 (用spring mvc @ResponseBody 自动返回的json串 ) 知识分类:EXTJS  spring mvc json 记录时间: 20150708 简单描述:用json.length 属性长度来判断是否为空,在此过程中spring mvc 自动返回的json串是 字符串的类型,所以用.length的方式返回的则是字符串的长度(一般空的JSON 在此处返回的长度应为3),并不是数组的长度,在EXTJS中用Ext.decode(json); 则可以将字符串js

HttpServletResponse工具类和HttpServletRequest工具类,前台参数接收方式和后台返回(JSON)数据格式

RequestUtils.java 操作类 package cn.utils; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.util.UrlPathHelper; import javax.servlet.http.HttpServletRequest; import java

【ListViewJson】【MainActivity功能性分析,不讨论具体工具类的实现】【android解析json数据(包含对图片数据的异步缓存处理),并将其加载到listview中】

最近遇到了一个相当好.对初学者相当友善的项目,是描述如何将json数据解析,并加载到listview中. 但是个人认为以后所有类似功能的实现都可以使用这套工具. 项目也可以使用这套架构. 这个项目是处理每个news只有一个imgurl,应该考虑一下当imgurl数量不定的时候具体应该怎么解决. 首先项目源码结构如下: 项目下载链接:http://download.csdn.net/download/y562810463/8004245 在这个项目中的com.demo.app.common包完全可

Ajax和Json实现后台传集合给前台并赋值文本框-----Ajax\Json\JQuery

功能:放两个文本框和一个确定按钮,确定按钮绑定点击事件,点击确定就加载后台数据库中的数据,显示在文本框中. 基础知识:JQuery  ajax异步 .eval() .each() json数据 1.HTML文件 <div id="Text"> <input type="text" id="comment1" name="t_A21" numberID="one" value="&

springMVC 【@response 返回对象自动变成json并且防止乱码】 &amp; 【配置支持实体类中的@DateTimeFormat注解】

在springmvc的配置文件中加上这一段即可 <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" > <!-- 本文关键内容--> <property name="messageConverters"> <list> <bean class="org.springfram

IE10以下的IE浏览器在接收application/json类型的响应时,会提示是否要下载该json文件

IE10以下的IE浏览器并不支持application/json这种response格式,所以需要在服务端先将对象转成json字符串然后,设置Content-Type为text/html的类型,再返回,就行了. 如果你用的是springMVC,那么即使在controller层使用response对象设置了响应头信息,也是没有用的,因为如果你标识了@Responsebody注解,spring会自动根据你的返回值类型判断是否要给你将返回值转成某个视图对象(具体根据你的springMVC的配置,一般是

序列化工具类({对实体Bean进行序列化操作.},{将字节数组反序列化为实体Bean.})

package com.dsj.gdbd.utils.serialize; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; /** * * @作用:序列化工具类 * @功能: * @作者: wyt * @