У меня проблемы с десериализацией объекта JSON в список.Мой объект JSON выглядит следующим образом:
[{
"returnValue": [{
"facility": "DRIO",
"recrd_desc": "DEFAULT",
"update_time": {
"$date": 1509128545000
},
"control_num": 1,
"starttime": {
"$date": 1506830400000
},
"endtime": {
"$date": 4102462799000
},
"can_exchange_rate": 2000
},
{
"facility": "DRIO",
"recrd_desc": "TEMP",
"update_time": {
"$date": 1521229607000
},
"control_num": 37,
"starttime": {
"$date": 1513040240000
},
"endtime": {
"$date": 1544576240000
},
"can_exchange_rate": 2112
},
{
"facility": "DRIO",
"recrd_desc": "TEMP 3",
"update_time": {
"$date": 1521229399000
},
"control_num": 38,
"starttime": {
"$date": 1544576580000
},
"endtime": {
"$date": 1576112580000
},
"can_exchange_rate": 2000
}],
"ok": 1.0
}]
, а мой класс C #:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace CSCApi.Models
{
public class FareSchedResponse
{
public List<FareSched> ReturnValue { get; set; }
public float Ok { get; set; }
}
public class FareSched
{
public string facility { get; set; }
public string recrd_desc { get; set; }
public Update_Time update_time { get; set; }
public int control_num { get; set; }
public Starttime starttime { get; set; }
public Endtime endtime { get; set; }
public int can_exchange_rate { get; set; }
}
public class Update_Time
{
public long date { get; set; }
}
public class Starttime
{
public long date { get; set; }
}
public class Endtime
{
public long date { get; set; }
}
}
Проблема, которая возникает, заключается в том, что значение, возвращаемое для Update_Time, StartTime и EndTime, равно 0 вместофактических длинных значений.Я не уверен, где ошибка.
Любая помощь приветствуется.NH
Код десериализации:
using Newtonsoft.Json;
[HttpGet]
[Route("api/FareSchedule/GetFareChart/{ActivePlazaID}/{ControlNumber}")]
public async Task<IHttpActionResult> GetFareChartAsync(string ActivePlazaID, int ControlNumber)
{
try
{
var json = await _dbCalls.GetFareChart(ActivePlazaID, ControlNumber);
var r = ParseResponse<FareSchedResponse>(json);
return Ok(r.ReturnValue);
}
catch (Exception e)
{
return BadRequest(e.Message);
}
}
public static T ParseResponse<T>(string json)
{
try
{
List<T> r = JsonConvert.DeserializeObject<List<T>>(FormatAsList(json));
if (r != null)
return r[0];
}
catch (Exception)
{
}
return JsonConvert.DeserializeObject<T>(FormatAsList(json));
}
public static string FormatAsList(string json)
{
try
{
var retVal = json;
if (!string.IsNullOrWhiteSpace(retVal) && retVal.IndexOf(":[") <= 0)
{
retVal = retVal.Replace("[{\"returnValue\":", "[{\"returnValue\":[");
retVal = retVal.Replace(",\"ok\":", "],\"ok\":");
return retVal;
}
}
catch (Exception)
{
// do nothing
}
return json;
}