后台LocalDateTime参数的接收问题(Failed to convert value of type ‘java.lang.String‘ to required type ‘java.tim
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
.net webapi .net core 统一时间返回格式, .net core 2.0, .net core 3.1
在用 webapi 或者.net core 写接口时, 我们的时间类型往往是 datetime类型的, 如果直接返回, 前端拿到的结果往往这样这种格式 : 下面讲怎么改成我们想要的格式 webapi 在WebApiConfig.cs文件里的Register方法添加如下代码, 在接口返回的时候要用 ok(object) 这种格式.
1 2 3 4 5 6 7 |
//统一返回时间格式,配置返回的时间类型数据格式 config.Formatters.JsonFormatter.SerializerSettings.Converters.Add( new Newtonsoft.Json.Converters.IsoDateTimeConverter() { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" } ); |
.net core 2.X 在 Startup.cs 文件里 的 ConfigureServices的 AddMvc 追加下面的代码
1 2 3 4 |
services.AddMvc().AddJsonOptions(options => { options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss"; }); |
.net core 3.x 升级到.net core 3.0 以后,不在默认包含 NewtonsoftJson,而是默认使用System.Text.Json. 我们可以定义一个继承 System.Text.Json.Serialization.JsonConverter 的类,实现其Read 和 Write两个抽象方法. 然后再使用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
/// <summary> /// 统一时间转换 /// </summary> public class DatetimeJsonConverter : JsonConverter<DateTime> { /// <summary> /// 读 /// </summary> /// <param name="reader"></param> /// <param name="typeToConvert"></param> /// <param name="options"></param> /// <returns></returns> public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { if (reader.TokenType == JsonTokenType.String) { if (DateTime.TryParse(reader.GetString(), out DateTime date)) return date; } return reader.GetDateTime(); } /// <summary> /// 写 /// </summary> /// <param name="writer"></param> /// <param name="value"></param> /// <param name="options"></param> public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options) { writer.WriteStringValue(value.ToString("yyyy-MM-dd HH:mm:ss")); } } |
然后再 ConfigureServices 里添加
1 2 3 |
services.AddMvc().AddJsonOptions((options)=> { options.JsonSerializerOptions.Converters.Add(new DatetimeJsonConverter()); }); |
.net core 3.x 使用 NewtonsoftJson序列化后 刚刚提到.net core 3.0以后序列化默认是使用System.Text.Json. 但是由于这个实在是不好用, 所以可以改回NewtonsoftJson,之后修改时间格式如下
1 2 3 4 |
services.AddControllers() .AddNewtonsoftJson((option)=> { option.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";//时间格式化 }); |
from: https://www.cnblogs.com/fancyblogs/p/12936939.html
View Details.net生产WebService代理类
.netcore dotnet-svcutil -o d:\HisService.cs http://xxxx/Service.asmx?wsdl framework wsdl /language:c# /n:命名空间 /out:c:/WebServiceForAutoOrder.cs http://{url}/hisOrderReal/WebServiceForAutoOrder.asmx?WSDL
View Details解决.Net Core中文被编码问题
//解决中文被编码
services.AddSingleton(HtmlEncoder.Create(UnicodeRanges.All));
MySQL:SELECT list is not in GROUP BY clause 报错 解决方案
首先执行以下查询:
不出所料就是有一个ONLY_FULL_GROUP_BY
SELECT @@sql_mode;
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
所以我去到配置文件中,在 mysqld 下配置一下 sql_mode,把 ONLY_FULL_GROUP_BY 去掉
# 添加的行如下
sql_model=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
HttpServletRequest 对象通过以下方法来获取请求路径
1 2 3 4 5 6 7 8 |
//HttpServletRequest 对象通过以下方法来获取请求路径,如下所示: String serverName = request.getServerName();//获取服务器名,127.0.0.1; int serverPort = request.getServerPort();//获取服务器端口号,8083; String contextPath = request.getContextPath();//获取项目名,/Aop; String ServletPath=request.getServletPath();//获取Servlet路径,/getUserDetails/45; String QueryString=request.getQueryString();//获取参数部分,即问号后面的部分:username=zhangsan StringBuffer RequestURL=request.getRequestURL();//获取请求URL,等于不包含参数的整个请求路径:http://localhost:8083/Aop/getUserDetails/45 String RemoteAddr=request.getRemoteAddr();//获取服务器的IP,如localhost对应ip为127.0. |
from:https://www.cnblogs.com/zhoading/p/13954370.html
View DetailsJava判断文件或者文件夹是否存在的方法
// 指定文件或文件夹的路径
Path path = Paths.get("path/to/your/file_or_directory");
// 检查路径是否存在,并且是一个文件(不是文件夹)
boolean isFile = Files.exists(path, LinkOption.NOFOLLOW_LINKS) && Files.isRegularFile(path);
// 检查路径是否存在,并且是一个文件夹(不是文件)
boolean isDirectory = Files.exists(path, LinkOption.NOFOLLOW_LINKS) && Files.isDirectory(path);
Edge/Chrome浏览器强制将http转https的解决方案
Edge浏览器:edge://net-internals
Chrome浏览器:chrome://net-internals