Разбор даты Java через Джексона JSON в C # - PullRequest
0 голосов
/ 18 мая 2018

Мне нужно проанализировать java-дату из бэкэнда в ac # frontend (Unity) через json с помощью картографа Джексона на бэкэнд-стороне и модуля отображения юнитов (JsonUtility) на внешнем интерфейсе.

Теперь эти двакартографы, кажется, не работают вместе, так как картографическое устройство единства всегда не может получить правильную дату и по умолчанию устанавливается на «нулевую дату».У меня вопрос, нужно ли отправлять дату по проводам (миллисекунды)?Если это так, моему картографу Джексона потребуется специальный (де) сериализатор - есть ли с этим компромисс производительности?

Редактировать:

Не так много кода, чтобы объяснить:

Бэкэнд зависимостей Maven

 <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <version>2.9.2</version>
 </dependency>

Бэкэнд (в моем случае это весенняя загрузка)

import lombok.Data;
import java.util.Date;
@Data
public class Backend{
   private Date aDate;

  public Backend() {
  this.aDate = new Date();
  }
}

JSON при вызове REST API

{
 "aDate": "2018-05-18T22:35:47.760+0000"       
}

Frontend (C # / Unity)

    using System;
    [Serializable]
    public class FrontEnd
    {
      public DateTime aDate;
    }

  private IEnumerator AcceptWww(WWW www)
        {
         // call made to Backend REST receiving an Backend object here
         yield return www;
        // trying to parse this to a FrontEnd object
        var dateObject = JsonUtility.FromJson<FrontEnd>(www.text);
       // date will always default to 1970
      dateObject.aDate;
        }

Заранее спасибо,

Codehai

1 Ответ

0 голосов
/ 18 мая 2018
@JsonFormat(shape = JsonFormat.Shape.NUMBER)
private Date aDate;

будет ответом для переноса даты в виде количества секунд с момента передачи по проводам.Это может быть прочитано C # DateTime - однако я не имею ни малейшего представления о точности и производительности этого метода.На C # для получения длинного вам нужно включить что-то вроде этого для разбора длинного в 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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...