C#将对象序列化成JSON字符串

  1. public string GetJsonString()
  2. {
  3. List<Product> products = new List<Product>(){
  4. new Product(){Name="苹果",Price=5.5},
  5. new Product(){Name="橘子",Price=2.5},
  6. new Product(){Name="干柿子",Price=16.00}
  7. };
  8. ProductList productlist = new ProductList();
  9. productlist.GetProducts = products;
  10. return new JavaScriptSerializer().Serialize(productlist));
  11. }
  12. public class Product
  13. {
  14. public string Name { get; set; }
  15. public double Price { get; set; }
  16. }
  17. public class ProductList
  18. {
  19. public List<Product> GetProducts { get; set; }
  20. }

这里主要是使用JavaScriptSerializer来实现序列化操作,这样我们就可以把对象转换成Json格式的字符串,生成的结果如下:

  1. {"GetProducts":[{"Name":"苹果","Price":5.5},{"Name":"橘子","Price":2.5},{"Name":"柿子","Price":16}]}

如何将Json字符串转换成对象使用呢?

在实际开发中,经常有可能遇到用JS传递一个Json格式的字符串到后台使用,如果能自动将字符串转换成想要的对象,那进行遍历或其他操作时,就方便多了。那具体是如何实现的呢?

  1. public static List<T> JSONStringToList<T>(this string JsonStr)
  2. {
  3. JavaScriptSerializer Serializer = new JavaScriptSerializer();
  4. List<T> objs = Serializer.Deserialize<List<T>>(JsonStr);
  5. return objs;
  6. }
  7. public static T Deserialize<T>(string json)
  8. {
  9. T obj = Activator.CreateInstance<T>();
  10. using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
  11. {
  12. DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
  13. return (T)serializer.ReadObject(ms);
  14. }
  15. }
  16. string JsonStr = "[{Name:'苹果',Price:5.5},{Name:'橘子',Price:2.5},{Name:'柿子',Price:16}]";
  17. List<Product> products = new List<Product>();
  18. products = JSONStringToList<Product>(JsonStr);
  19. foreach (var item in products)
  20. {
  21. Response.Write(item.Name + ":" + item.Price + "<br />");
  22. }
  23. public class Product
  24. {
  25. public string Name { get; set; }
  26. public double Price { get; set; }
  27. }

在上面的例子中,可以很方便的将Json字符串转换成List对象,操作的时候就方便多了~

[参考]C# JSON字符串序列化与反序列化的更多相关文章

  1. C# JSON字符串序列化与反序列化

    JSON与c#对象转换http://hi.baidu.com/donick/item/4d741338870c91fe97f88d33 C# JSON字符串序列化与反序列化 – http://www. ...

  2. C# JSON字符串序列化与反序列化常见模型举例

    C#中实体转Json常用的类JavaScriptSerializer,该类位于using System.Web.Script.Serialization;命名空间中,添加引用system.web.ex ...

  3. JSON字符串序列化与反序列化浅试

    一.添加引用(using Newtonsoft.Json.Linq;) 二. 1.生成json字符串源码 List<string> list = new List<string> ...

  4. Newtonsoft.Json 的序列化与反序列化

    首先补充一点,Json.Net是支持序列化和反序列化DataTable,DataSet,Entity Framework和NHibernate的.我举例说明DataTable的序列化和反序列化.创建一 ...

  5. 【转】Newtonsoft.Json 的序列化与反序列化

    http://www.cnblogs.com/08shiyan/p/3464028.html 首先补充一点,Json.Net是支持序列化和反序列化DataTable,DataSet,Entity Fr ...

  6. Json.Net序列化和反序列化设置

    首先补充一点,Json.Net是支持序列化和反序列化DataTable,DataSet,Entity Framework和NHibernate的.我举例说明DataTable的序列化和反序列化.创建一 ...

  7. Json.Net系列教程 3.Json.Net序列化和反序列化设置

    原文 Json.Net系列教程 3.Json.Net序列化和反序列化设置 上节补充 首先补充一点,Json.Net是支持序列化和反序列化DataTable,DataSet,Entity Framewo ...

  8. 一:Newtonsoft.Json 支持序列化与反序列化的.net 对象类型;

    导航目录: Newtonsoft.Json 概述 一:Newtonsoft.Json 支持序列化与反序列化的.net 对象类型:    二:C#对象.集合.DataTable与Json内容互转示例: ...

  9. Json的序列化与反序列化以及乱入的k_BackingField

    0.Newtonsoft.json 最简单的最强大的基于c#的json解析库是Newtonsoft.json 在NuGet程序包管理器中在线搜索“json”,选择JSon.Net,并安装.   使用到 ...

随机推荐

  1. 【lua学习笔记】--- 数据类型

    print("hello world!") --[注释方法]-- 单行注释 对应C# //--[[ 多行注释 /* 对应C# */]]-- -- [数据类型]--1 nil 空值 ...

  2. shell 读取配置文件的用法

    https://blog.csdn.net/qq_36684665/article/details/81134179 亲测有用!

  3. Java DOM解析器 - 解析XML文档

    使用DOM的步骤 以下是在使用DOM解析器解析文档使用的步骤. 导入XML相关的软件包. 创建DocumentBuilder 从文件或流创建一个文档 提取根元素 检查属性 检查子元素 导入XML相关的 ...

  4. leetcode.矩阵.566重塑矩阵-Java

    1. 具体题目 给出一个由二维数组表示的矩阵,以及两个正整数r和c,分别表示想要的重构的矩阵的行数和列数.重构后的矩阵需要将原始矩阵的所有元素以相同的行遍历顺序填充.如果具有给定参数的reshape操 ...

  5. JSON工具类的构建(前端版本)

    前言 在前后端交互的选择上,之前一直采用的是模板引擎(因为我只负责后端). 而这次的一个算是作业吧,前后端都是我,所以就研究了一下JSON交互在java web的应用(主要是前端). 优缺点 因为我是 ...

  6. c# dotNetBar symbol属性代码动态设置方法

    C#: button.Symbol = "\uf060"; VB: button.Symbol = ChrW("&Hf060") Since we in ...

  7. CF1216X

    由于rating限制,和慎老师用小号打了一场div 3 从A到F都没啥思维含量..感觉最难想的就是C了?? CF1216C 考完以后想hack一下这道题,然后发现满屏都是分类讨论 我大概是写不动 or ...

  8. Java-技术专区-虚拟机系列-内存模型(JMM)

           Java8内存模型—永久代(PermGen)和元空间(Metaspace) 一.JVM 内存模型 根据 JVM 规范,JVM 内存共分为虚拟机栈.堆.方法区.程序计数器.本地方法栈五个部 ...

  9. Spring学习笔记(8)——依赖注入

    spring依赖注入使用构造器注入使用属性setter方法注入使用Field注入(用于注解方式) 注入依赖对象可以采用手工装配或自动装配,在实际应用中建议使用手工装配,因为自动装配会产生未知情况,开发 ...

  10. 我的scoi2018

    高一,很尴尬,凉~ -------- 大家好,我是分界线,我弱弱的说本次采用倒序的写作手法 -------- 故事是这样讲的: Day0: 刚刚去那个电科搞的集训,早上才考了一波模拟赛,下午就过来住酒 ...