将jacksonjson上的Java数据解析为C#
我需要使用后端的jackson映射器和前端的Unity映射器(JsonUtility),通过json将java数据从后端解析到c#frontend(Unity) 现在这两个映射器似乎不能一起工作,因为unity映射器总是无法接收正确的日期,并且默认为“空日期”。 我的问题是,我是否需要通过电线发送长(毫秒)的日期? 如果是这样的话,我的jackson映射器将需要一个自定义(反)序列化器-这有什么性能折衷吗 编辑: 没有太多代码可以解释: Maven依赖后端将jacksonjson上的Java数据解析为C#,java,c#,json,unity3d,jackson,Java,C#,Json,Unity3d,Jackson,我需要使用后端的jackson映射器和前端的Unity映射器(JsonUtility),通过json将java数据从后端解析到c#frontend(Unity) 现在这两个映射器似乎不能一起工作,因为unity映射器总是无法接收正确的日期,并且默认为“空日期”。 我的问题是,我是否需要通过电线发送长(毫秒)的日期? 如果是这样的话,我的jackson映射器将需要一个自定义(反)序列化器-这有什么性能折衷吗 编辑: 没有太多代码可以解释: Maven依赖后端 <dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.2</version>
</dependency>
调用RESTAPI时使用JSON
{
"aDate": "2018-05-18T22:35:47.760+0000"
}
前端(C#/Unity)
使用系统;
[可序列化]
公共类前端
{
公共日期时间aDate;
}
私有IEnumerator接受WWW(WWW)
{
//调用后端REST在此处接收后端对象
收益率;
//正在尝试将其解析为前端对象
var dateObject=JsonUtility.FromJson(www.text);
//日期将始终默认为1970年
dateObject.aDate;
}
提前感谢,
科德海
@JsonFormat(shape = JsonFormat.Shape.NUMBER)
private Date aDate;
答案是将日期传输为自划时代以来的秒数。这可以通过C#DateTime读取-但是我不知道这种方法的准确性和性能。
在C#上,要提取long,您需要包括以下内容来将long解析为DateTime:
public static DateTime LongToDate(long javaTimeStamp)
{
// Java timestamp is milliseconds past epoch
var dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
dtDateTime = dtDateTime.AddMilliseconds(javaTimeStamp).ToLocalTime();
return dtDateTime;
}
您在这里不是新手,现在应该知道需要您的代码来解决问题。您好,程序员,没有太多代码来解释这一点,但您仍然完全正确-我更新了我的问题以满足需要。
@JsonFormat(shape = JsonFormat.Shape.NUMBER)
private Date aDate;
public static DateTime LongToDate(long javaTimeStamp)
{
// Java timestamp is milliseconds past epoch
var dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
dtDateTime = dtDateTime.AddMilliseconds(javaTimeStamp).ToLocalTime();
return dtDateTime;
}