一、Asp.Net Core中的Json序列化处理使用的是Newtonsoft.Json,更多参考:C# Newtonsoft.Json JsonSerializerSettings配置序列化操作C# Json序列化工具--Newtonsoft.Json简介和使用

1.Newtonsoft.Json仅 依赖.Net Standard所以支持.Net Framework也支持.Net Core

2.更多说明

/*
* 1.在Core Mvc中JsonResult 默认支持Get请求
* 2.使用JQuery的ajax请求,返回json数据自动转换成 object对象
* 3.在 Core Mvc的 后台JsonResult序列化的时候,默认情况下自动 处理 的命名规则,改成了 js的驼峰格式
* 4.在 Core Mvc中json 的序列化发序列化使用的是Newtonsoft.Json库
* 5.默认没有处理循环引用的问题
*/

二、使用实例

Jquery 的ajax get请求

$('#btnOne').click(function () {
//使用ajax get请求json 数据
$.get('@Url.Action("DataOne")', {}, function (data) {
console.info(data);
console.info(data[0].menuName);
});
});

1.默认情况,使用驼峰样式处理字段名Key

public JsonResult DataThree()
{
//Ef Core现在 不支持延迟加载,对于关联表数据都为null
List<Menu> menus = _context.Menu
.ToList();
return Json(menus);
}

2.设置不使用驼峰格式处理,由后台字段确定大小写,也就是默认格式

public JsonResult DataOne()
{
List<Menu> menus = _context.Menu.ToList();
JsonSerializerSettings settings = new JsonSerializerSettings();
//EF Core中默认为驼峰样式序列化处理key
//settings.ContractResolver = new CamelCasePropertyNamesContractResolver();
//使用默认方式,不更改元数据的key的大小写
settings.ContractResolver = new DefaultContractResolver(); return Json(menus, settings);
}

3.处理循环引用,加载关联表数据、

public JsonResult DataTwo()
{
List<Menu> menus = _context.Menu
.Include(q => q.Model)
.ToList();
//处理循环引用问题
JsonSerializerSettings settings = new JsonSerializerSettings();
settings.MaxDepth = ;
settings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; //设置不处理循环引用
return Json(menus, settings);
}

三、全局设置,Json序列化配置

IMvcBuilder依赖注入扩展了MvcJsonMvcBuilderExtensions配置

定义如下 :

    //
// 摘要:
// Extensions methods for configuring MVC via an Microsoft.Extensions.DependencyInjection.IMvcBuilder.
public static class MvcJsonMvcBuilderExtensions
{
//
// 摘要:
// Adds configuration of Microsoft.AspNetCore.Mvc.MvcJsonOptions for the application.
//
// 参数:
// builder:
// The Microsoft.Extensions.DependencyInjection.IMvcBuilder.
//
// setupAction:
// The Microsoft.AspNetCore.Mvc.MvcJsonOptions which need to be configured.
public static IMvcBuilder AddJsonOptions(this IMvcBuilder builder, Action<MvcJsonOptions> setupAction);
}

MvcJsonOptions:

    //
// 摘要:
// Provides programmatic configuration for JSON in the MVC framework.
public class MvcJsonOptions
{
public MvcJsonOptions(); //
// 摘要:
// Gets the Newtonsoft.Json.JsonSerializerSettings that are used by this application.
public JsonSerializerSettings SerializerSettings { get; }
}

在Startup文件中修改

// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc()
//全局配置Json序列化处理
.AddJsonOptions(options =>
{
//忽略循环引用
options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
//不使用驼峰样式的key
options.SerializerSettings.ContractResolver = new DefaultContractResolver();
//设置时间格式
options.SerializerSettings.DateFormatString = "yyyy-MM-dd";
}
);
}

更多:

.NetCore中EFCore的使用整理(二)-关联表查询

Asp.Net Core MVC控制器和视图之间传值

.NetCore中EFCore的使用整理

Asp.Net Core中Json序列化处理整理的更多相关文章

  1. ASP.NET Core中返回 json 数据首字母大小写问题

    ASP.NET Core中返回 json 数据首字母大小写问题 在asp.net core中使用ajax请求动态绑定数据时遇到该问题 后台返回数据字段首字母为定义的大写,返回的数据没有问题 但是在前台 ...

  2. ASP.NET Core 在 JSON 文件中配置依赖注入

    前言 在上一篇文章中写了如何在MVC中配置全局路由前缀,今天给大家介绍一下如何在在 json 文件中配置依赖注入. 在以前的 ASP.NET 4+ (MVC,Web Api,Owin,SingalR等 ...

  3. 如何在ASP.NET Core中使用JSON Patch

    原文: JSON Patch With ASP.NET Core 作者:.NET Core Tutorials 译文:如何在ASP.NET Core中使用JSON Patch 地址:https://w ...

  4. [08]ASP.NET Core 中 launchsettings.json 启动配置文件

    ASP.NET Core launchsettings.json 启动配置文件 本文作者:梁桐铭- 微软最有价值专家(Microsoft MVP) 文章会随着版本进行更新,关注我获取最新版本 本文出自 ...

  5. 转载:ASP.NET Core 在 JSON 文件中配置依赖注入

    在以前的 ASP.NET 4+ (MVC,Web Api,Owin,SingalR等)时候,都是提供了专有的接口以供使用第三方的依赖注入组件,比如我们常用的会使用 Autofac.Untiy.Stri ...

  6. ASP.NET Core 中文文档 第三章 原理(13)管理应用程序状态

    原文:Managing Application State 作者:Steve Smith 翻译:姚阿勇(Dr.Yao) 校对:高嵩 在 ASP.NET Core 中,有多种途径可以对应用程序的状态进行 ...

  7. 在ASP.NET Core 中使用Cookie中间件

    在ASP.NET Core 中使用Cookie中间件 ASP.NET Core 提供了Cookie中间件来序列化用户主题到一个加密的Cookie中并且在后来的请求中校验这个Cookie,再现用户并且分 ...

  8. ASP.NET Core中使用自定义MVC过滤器属性的依赖注入

    除了将自己的中间件添加到ASP.NET MVC Core应用程序管道之外,您还可以使用自定义MVC过滤器属性来控制响应,并有选择地将它们应用于整个控制器或控制器操作. ASP.NET Core中常用的 ...

  9. 如何简单的在 ASP.NET Core 中集成 JWT 认证?

    前情提要:ASP.NET Core 使用 JWT 搭建分布式无状态身份验证系统 文章超长预警(1万字以上),不想看全部实现过程的同学可以直接跳转到末尾查看成果或者一键安装相关的 nuget 包 自上一 ...

随机推荐

  1. CF126B

    CF126B Password 题意: 给出一个字符串 H,找一个最长的字符串 h,使得它既作为前缀出现过.又作为后缀出现过.还作为中间的子串出现过. 解法: 沿着 $ next_n $ 枚举字符串, ...

  2. 使用mybatis-spring-boot-starter如何打印sql语句

    只需要将接口文件的日志设置为debug即可. 例如你的mapper接口所在的文件夹是 com.demo.mapper 那么在application.properties配置文件中添加 logging. ...

  3. poj2992 阶乘分解

    /* 将C(n,k)质因数分解,然后约束个数按公式计算 */ #include<iostream> #include<cstring> #include<cstdio&g ...

  4. iOS学习笔记之Block

    写在前面 学习iOS开发的过程中,在很多场合都遇到了Block.说实话,虽然自己依葫芦画瓢的将Block"拿来"用着,但这种"拿来主义"与学习时应持有的探索精神 ...

  5. Android 倒计时按钮,倒计时发送短信验证码…

    Android基础之——CountDownTimer类,轻松实现倒计时功能https://www.cnblogs.com/yfceshi/p/6853746.html android中获取验证码后出现 ...

  6. Maven多模块项目

    1.项目结构-父项目 其中parent是父项目,这个父项目的父项目是springboot,我搭建这个多模块的项目的目的主要是为了研究学习springbatch 父项目的pom文件内容: <pro ...

  7. [转] Sublime Text3 配置 NodeJs 环境

    前言 大家都知道,Sublime Text 安装插件一般从 Package Control 中直接安装即可,当我安装 node js 插件时候,直接通过Package Control 安装,虽然插件安 ...

  8. [ZJOI2006]书架

    链接:https://www.luogu.org/problemnew/show/P2596 题解: 写了两天的平衡树终于大概弄好了所有模板(模板不熟写错debug真是要死) 对于放在头尾,只需要删除 ...

  9. python全栈开发day44-js、DOM、BOM

    JS的三大部分 一.ECMAJavaScript基础语法: 1.javascript的引入方式 1) 行内式 <script> alert(1) </script> 2) 引入 ...

  10. 016 SpringMVC中重定向

    1.介绍 2.index <%@ page language="java" contentType="text/html; charset=utf-8" ...