Ошибка свойства DateTime при использовании автозапроса servicestack - PullRequest
3 голосов
/ 26 марта 2019

Спасибо Mythz за предоставление такого удивительного и мощного фреймворка. Однако я столкнулся со свойством DateTime, отображаемым как «/ Date (1543681261000-0000) /» вместо «2019-03-25T12: 50: 3000» с помощью автозапроса servicestack. Я не мог найти соответствующие документы. Пожалуйста, помогите мне.

{
"customer": [
    {
        "transaction_total": 0,
        "text": "0067 83228780",
        "transaction_time": 0,
        "action": 0,
        "point_collection_on_registration": false,
        "id": 71,
        "push_notification_id": "null",
        "name": "0067",
        "ic": "27668",
        "type": 0,
        "phone_no": "83228780",
        "point": 5132,
        "balance": 1621.3,
        "issue_date": "/Date(1543681261000-0000)/",
        "is_subscribed": true,
        "is_expiry": false,
        "lang_preferred": "cn",
        "is_delete": false
    }
],
"count_all": 120

}

1 Ответ

2 голосов
/ 26 марта 2019

ServiceStack по умолчанию использует даты WCF для JSON, см. Этот ответ для различных способов разбора дат WCF в JavaScript .

Вы можете изменить способ сериализации дат в JSON для любогоОтвет JSON в ServiceStack путем настройки ответов JSON , например, вы можете изменить JSON, возвращенный службой Автоматический запрос , с помощью:

  • ?jsconfig=DateHandler:ISO8601
  • ?jsconfig=DateHandler:ISO8601DateOnly
  • ?jsconfig=DateHandler:ISO8601DateTime

Или используйте сокращенное обозначение псевдонима:

  • ?jsconfig=dh:iso8601
  • ?jsconfig=dh:iso8601do
  • ?jsconfig=dh:iso8601dt

В качестве альтернативы вы можете указать ServiceStack всегда использовать даты ISO8601 в JSON в вашем AppHost.Configure() с:

JsConfig.Init(new Config {
    DateHandler = DateHandler.ISO8601
});
...