java json将list序列化,.net 将List序列化成Json字符串

将List类型转化为Json,是我们平常开发时最常见的了。在使用中,有很多种方法,也可以使用。

第一种 第三方组件:Newtonsoft.Json.dll

//转化成Json

Newtonsoft.Json.JsonConvert.SerializeObject(obj);

//反序列化

Newtonsoft.Json.JsonConvert.DeserializeObject(string);

注意:版本更新时,可能会遇到问题:

5ea7cb75757a2bc7770180593fc68c67.png

因为引用出了问题,在程序集里面找不到的Newtonsoft.Json,所以它就拿从系统盘里面预装的旧版的来用。

结果就报版本错误了。

web.config 里面注明了

就要求用6.*版本的了。

这时,可以删除bin文件夹里面的Newtonsoft.Json,重新用nuget 引用一遍。

也用记事本打开项目文件(*.csproj)可以找到在这个文件中,有两处Newtonsoft.Json的引用,删掉老版本的引用就好了。

网上看了下,具体问题的可能的三个原因:

第一,引用不存在vs自动找到旧版的。

第二,web.config配置的版本号跟实际想要版本号不对。

第三,bin文件夹里面的根本就是旧版的。

第二种,微软自带的组件:System.Runtime.Serialization.dll

使用方式,新建个工具类,然后调用:

public class SerializerHelper

{

///

/// JSON序列化

///

public static string JsonSerializer(T t)

{

DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));

using (MemoryStream ms = new MemoryStream())

{

ser.WriteObject(ms, t);

return Encoding.UTF8.GetString(ms.ToArray());

}

}

///

/// JSON反序列化

///

public static T JsonDeserialize(string jsonString)

{

DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));

using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)))

{

return (T)ser.ReadObject(ms);

}

}

}

第三种:微软自带组件System.Web.Extensions.dll(JavaScriptSerializer 类)

属性:

MaxJsonLength 获取或设置 JavaScriptSerializer 类接受的 JSON 字符串的最大长度。

RecursionLimit 获取或设置用于约束要处理的对象级别的数目的限制。

方法:

ConvertToType)>) 将给定对象转换为指定类型。

Deserialize)>) 将指定的 JSON 字符串转换为 T 类型的对象。

DeserializeObject 将指定的 JSON 字符串转换为对象图。

RegisterConverters 使用 JavaScriptSerializer 实例注册自定义转换器。

Serialize 已重载。 将对象转换为 JSON 字符串。

注意:

DateTime 类型 Date 对象,在 JSON 中表示为“\/Date(刻度数)\/”。刻度数是一个正的或负的长值,该值指示从 UTC 1970 年 1 月 1 日午夜开始已经过的刻度数(毫秒)。

MaxJsonLength限制了被反序列化和序列化生成的JSON字符串的长度,默认值位为2097152(0x200000,等同于 4 MB 的 Unicode 字符串数据)。

RecursionLimit用于设置被序列化对象和反序列化生成对象结构的允许的层级数,默认值为100。

第四种:MVC 的Controller 中的 return Json(Obj,JsonRequestBehavior.AllowGet)

System.Web.Mvc.JsonResult 对象,该对象使用指定 JSON 请求行为将指定对象序列化为 JavaScript 对象表示法。

出于对安全的考虑,JsonResult在默认的情况下不能作为对HTTP-GET请求的响应,在这种情况下并会直接抛出一个InvalidOperationException异常。我们可以通过它的JsonRequestBehavior属性开启JsonResult对HTTP-GET请求的支持。该属性类型号

为JsonRequestBehavior枚举,两个枚举项AllowGet和DenyGet分别表示允许/拒绝支持对HTTP-GET请求的响应。JsonResult的JsonRequestBehavior属性在初始化的时候被设置为DenyGet。

但是他有一个致命的缺陷,大小不好设置,当obj足够大时,就会报错:使用JSON JavaScriptSerializer进行序列化或反序列化时出错。字符串的长度超过了为maxJsonLength属性设置的值。

解决办法:.net 使用Json(),maxJsonLength属性设置的值问题 其实最佳的方案就是使用了上面的第三种 JavaScriptSerializer  类的MaxJsonLength 属性。

public ActionResult GetLargeJsonResult()

{

return new ContentResult

{

Content = new JavaScriptSerializer { MaxJsonLength = Int32.MaxValue }.Serialize(listResult),

ContentType = "application/json"

};

}

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

C#将对象序列化成JSON字符串 public string GetJsonString() { List products = new List

使用 EntityFramework后把一个对象序列化成json字符串引起循环引用的问题

先看一个T4模板生成的model实体类 著作权归作者所有. 商业转载请联系作者获得授权,非商业转载请注明出处. 作者:卷猫 链接:http://anneke.cn/ArticleInfo/Detial ...

SpringMVC将表单对象序列化成Json字符串提交,以List接收

出自:http://blog.csdn.net/m0_37595732/article/details/71440853 HTML

对象序列化成Json字符串 及 反序列化成对象

一. public static string JsonSerializer(T t)        {            DataContractJsonSerializer ...

Spring Boot Cache配置 序列化成JSON字符串

当我们使用@Cacheable注解的时候会将返回的对象缓存起来,我们会发现默认缓存的值是二进制的,不方便查看,为此我们自定义序列化配置,改成JSON格式的 配置如下: pom.xml <?xml ...

jackson2&period;8&period;4java对象序列化成json字符串格式化时间

public class User {private int id; private Date birthday; private double money; private String name; ...

将序列化成json格式的日期(毫秒数)转成日期格式

IOS开发之把 Array 和 Dictionaries 序列化成 JSON 对象

1 前言通过 NSJSONSerialization 这个类的 dataWithJSONObject:options:error:方法来实现,Array 和 dictionary 序列化成 JSON ...

随机推荐

用winform程序来了解委托和事件

一.浅谈委托 如果有个过winform 和webform 程序开发的小伙伴一定有个这样的感觉吧,点击Button直接就执行了那个方法,到此他是怎么实现了的呢,大家有考虑过没有? 回到正题,什么是委托呢 ...

shell &lt&semi;&lt&semi;EOF

1.考虑下面的需求,在主shell执行命令,进入其他的命令,后面的输入,想作为命令的输入,而不是主shell的输入,怎么办? 2.使用<

深入了解php opcode缓存原理

什么是opcode opcode(operate code)是计算机指令中的一部分,用于指定要执行的操作,指令的格式和规范由处理器的指定规范指定 opcode是一种php脚本编译后的中间语言,就像ja ...

浅析Java反射机制

目前,在项目中使用Java反射机制(除Spring框架)的地方不多,但为后续准备,简单将最近的反射体会总结如下: 1. 按光学中的反射,可以将java中的反射理解为“镜像”.有以下用途: Java反射 ...

JQuery获取touchstart&comma;touchmove&comma;touchend坐标

$('#id').on('touchstart',function(e) { ].pageX; }); JQuery如上. document.getElementById("id" ...

python&plus;selenium&plus;unnittest框架

python+selenium+unnittest框架,以百度搜索为例,做了一个简单的框架,先看一下整个项目目录结构 我用的是pycharm工具,我觉得这个工具是天使,超好用也超好看! 这些要感谢原作 ...

四则运算Java语言实验设计过程1

题目要求: 像二柱子那样,花二十分钟写一个能自动生成三十道小学四则运算题目的 “软件”.要求:除了整数以外,还要支持真分数的四则运算(需要验证结果的正确性).题目避免重复.可定制出题的数量. 设计思路 ...

HTML5和CSS3的一些学习记录

1.引述块级文本的标签(blockquote):

NGUI 背景图自适应

背景图UISprite组件调整如下: UIRoot设置: 不保持比例自适应: 保持宽与屏幕宽一致,高度随宽的缩放比例进行缩放:

vi&sol;vim 按键说明

转自:http://www.runoob.com/linux/linux-vim.html vi/vim 按键说明 除了上面简易范例的 i, Esc, :wq 之外,其实 vim 还有非常多的按键可以 ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值