如何更改Json.NET的序列化规则
我想要使序列化出来的JSON都是小写,可以通过建立 LowercaseContractResolver:
DefaultContractResolver
来实现, 创建Custom
ContractResolver可以对很多东西进行更改,可以自定义规则。。。 如果你只要针对某个的话,可以用 JsonProperty 或者使用CustomJsonConverter: JsonConverter。。
改变规则:
http://stackoverflow.com/questions/6288660/net-ensuring-json-keys-are-lowercase
http://stackoverflow.com/questions/12501805/how-to-set-json-net-contractserializer-for-a-certain-specific-type-instead-of-gl
http://stackoverflow.com/questions/25183710/serialize-json-property-name
CustomJsonConverter:
http://blog.maskalik.com/asp-net/json-net-implement-custom-serialization/
DATE TIME: http://cgeers.com/2011/09/25/writing-a-custom-json-net-datetime-converter/
You can create a custom contract resolver for this. The following contract resolver will convert all keys to lowercase:
public class LowercaseContractResolver : DefaultContractResolver
{
protected override string ResolvePropertyName(string propertyName)
{
return propertyName.ToLower();
}
}
Usage:
var settings = new JsonSerializerSettings();
settings.ContractResolver = new LowercaseContractResolver();
var json = JsonConvert.SerializeObject(authority, Formatting.Indented, settings);
Wil result in:
{"username":"Mark","apitoken":"xyzABC1234"}
If you always want to serialize using the LowercaseContractResolver
, consider wrapping it in a class to avoid repeating yourself:
public class LowercaseJsonSerializer
{
private static readonly JsonSerializerSettings Settings = new JsonSerializerSettings
{
ContractResolver = new LowercaseContractResolver()
};
public static string SerializeObject(object o)
{
return JsonConvert.SerializeObject(o, Formatting.Indented, Settings);
}
public class LowercaseContractResolver : DefaultContractResolver
{
protected override string ResolvePropertyName(string propertyName)
{
return propertyName.ToLower();
}
}
}
Which can be used like this:
var json = LowercaseJsonSerializer.SerializeObject(new { Foo = "bar" });
// { "foo": "bar" }
ASP.NET MVC4 / WebAPI
If you are using ASP.NET MVC4 / WebAPI, you can use a CamelCasePropertyNamesContractResolver
from Newtonsoft.Json library which included by default.
如何更改Json.NET的序列化规则的更多相关文章
- 迭代器/生成器/装饰器 /Json & pickle 数据序列化
本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器&生成器 列表生成式 孩子,我现在有个需 ...
- Python-Day4 Python基础进阶之生成器/迭代器/装饰器/Json & pickle 数据序列化
一.生成器 通过列表生成式,我们可以直接创建一个列表.但是,受到内存限制,列表容量肯定是有限的.而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面 ...
- ASP.NET Web API中的JSON和XML序列化
ASP.NET Web API中的JSON和XML序列化 前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok ...
- 【转】在C#中使用Json.Net进行序列化和反序列化及定制化
作者:Minotauros 原文地址:在C#中使用Json.Net进行序列化和反序列化及定制化 序列化(Serialize)是将对象转换成字节流,并将其用于存储或传输的过程,主要用途是保存对象的状态, ...
- Python下Json和Msgpack序列化比较
最近用Python时,遇到了序列化对象的问题,传统的json和新型序列化工具包msgpack都有涉及,于是做一个简单的总结: 通俗的讲:序列化:将对象信息转化为可以存储或传输的形式:反序列化:把这个 ...
- php json与xml序列化/反序列化
在web开发中对象的序列化与反序列化经常使用,比较主流的有json格式与xml格式的序列化与反序列化,今天想写个jsop的小demo,结果发现不会使用php序列化,查了一下资料,做个笔记 简单数组js ...
- js实现对json数据的序列化(兼容ie6以上浏览器)
/** * 增加对JSON数据的序列化方法, * 主要用于IE6.7不支持JSON对象的浏览器 */ var xue = xue || {};xue.json = xue.json || {}; xu ...
- 使用Json.NET来序列化所需的数据
我们在做开发的时候,很多时候需要和Json数据格式打交道,如Web开发里面,很多时候,数据通过Json进行传递到页面上,然后在进行处理的.而使用Json的时候,我们很多时候会涉及到几个序列化对象的使用 ...
- Python之路-python(装饰器、生成器、迭代器、Json & pickle 数据序列化、软件目录结构规范)
装饰器: 首先来认识一下python函数, 定义:本质是函数(功能是装饰其它函数),为其它函数添加附件功能 原则: 1.不能修改被装饰的函数的源代码. 2.不 ...
随机推荐
- ExchangeServeice获取在线outlook邮箱中的未读邮件
using Microsoft.Exchange.WebServices.Data; using System; using System.Collections.Generic; using Sys ...
- oracle之报错:ORA-00054: 资源正忙,要求指定 NOWAIT_数据库的几种锁
问题如下: SQL> conn scott/tiger@vm_databaseConnected to Oracle Database 11g Enterprise Edition Releas ...
- 《嵌入式Linux基础教程》补充阅读建议电子数目下载
第二章 <Linux内核设计与实现(原书第三版)> <深入理解Linux内核(第三版)> <深入理解Linux虚拟内存管理> 其他与Linux相关的电子书下载地址: ...
- Python xml 解析百度糯米信息
先利用爬虫利用百度糯米提供的api来采集北京当天的团购信息,保存为numi.html import xml.etree.ElementTree as ET import os class Nuomi( ...
- The Last Practice
Problem Description Tomorrow is contest day, Are you all ready?We have been training for 45 days, an ...
- 利用Android手机里的摄像头进行拍照
------- 源自梦想.永远是你IT事业的好友.只是勇敢地说出我学到! ---------- 1.在API Guides中找到Camera,里面讲解了如何使用系统自带的摄像头进行工作,之后我会试着翻 ...
- LineNumberReader类的使用
package com.lk.C; import java.io.IOException; import java.io.LineNumberReader; import java.io.PrintW ...
- js、jquery、动态添加option项
var selid = document.getElementById("sltid"); for(var i=0; i<10;i++){ //循环添加多个值 sid ...
- Mindjet MindManager 2016/2017 折腾记录
https://community.mindjet.com/mindjet/topics/ensure-2017-64-bit-version-installation Mindmanager sho ...
- hdu 4424 并查集
思路:将边从大到小排序,判断向哪边连,能使总和最大. #include<map> #include<set> #include<cmath> #include< ...