Как десериализовать строку JSON на стороне сервера - PullRequest
0 голосов
/ 22 мая 2018

В Angular, проект MVC, я использую JSON.stringify для передачи даты в строковом формате на стороне сервера.С другой стороны, я получаю строку как "\" 05/10/2018 \ "".Я пробовал разные способы конвертировать его в DateTime, но безуспешно.Я думаю, мне нужно десериализовать строку, преобразовать в дату, чтобы передать ее в SQL, но не могу понять, как?Я просмотрел, чтобы найти ответ, но безуспешно.Также, пожалуйста, дайте мне знать, если мне нужно установить пакет nuget.Вот класс обслуживания на стороне клиента:

private GetLOBUrl = 'http://localhost:63213/Vto/GetLOB';
getLOBs(action: string = null, data?: VTO): Observable<VTO[]> {
    return this.http.post<VTO[]>(this.GetLOBUrl + `/?ReportDate=${JSON.stringify(action)}`,null)
        .catch(this.errorHandler);
}
   errorHandler(error: HttpErrorResponse) {
    return Observable.throw(error.message || "Server Error");
}

На стороне сервера у меня есть проблемы с преобразованием reportDate в тип строки / даты.

 public static IEnumerable<DTO.DropDownItem> SelectLOB(string reportDate)
    {
   //reportDate comes in "\"05/10/2018\"" format. Here I need to convert reportDate to string 

        DateTime rDate = DateTime.Parse(reportDate);
        string query = @"SELECT Id, Description 
                      FROM TABLE 
                      WHERE StartDate = @reportDate AND StopDate is NULL";
        IEnumerable<DTO.DropDownItem> items = new List<DTO.DropDownItem>(0);
        var p = new DynamicParameters();
        p.Add("@reportDate", reportDate);
        using (SqlConnection con = Connection.GetConnection())
        {
            items = con.Query<DTO.DropDownItem>(query, param: p, commandType: CommandType.Text);
        }
        return items;
    }

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Вы действительно должны использовать библиотеку JToken, как указано выше, для синтаксического анализа вашего json, но я смог удалить кавычки перед синтаксическим анализом даты, используя приведенный ниже код, если это все, что вы хотите сделать.

  string val = "\"05/10/2018\"".Replace("\"","");
  DateTime rDate = DateTime.Parse(val);
0 голосов
/ 22 мая 2018

Я думаю, что вы хотите сделать

var dt= (DateTime)JToken.Parse("\"05/10/2018\"");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...