C# Newtonsoft反序列化同一日期返回不同的输出
我正在为我的Xamarin应用程序使用Newtonsoft反序列化JSON,在反序列化DateTime时遇到了一些问题 我尝试在asp.net C#上使用相同的代码,并将数据存储到数据集中。C#给了我正确的输出。然而,当它变成Xamarin形式时,它会产生错误的输出 预期结果应为2019年2月4日凌晨12:00:00 我不知道C# Newtonsoft反序列化同一日期返回不同的输出,c#,json,xamarin,json.net,C#,Json,Xamarin,Json.net,我正在为我的Xamarin应用程序使用Newtonsoft反序列化JSON,在反序列化DateTime时遇到了一些问题 我尝试在asp.net C#上使用相同的代码,并将数据存储到数据集中。C#给了我正确的输出。然而,当它变成Xamarin形式时,它会产生错误的输出 预期结果应为2019年2月4日凌晨12:00:00 我不知道2019年4月1日下午4:00:00是怎么来的 使用Xamarin时输出错误 public List<GetFleet> GetDefaults(string
2019年4月1日下午4:00:00
是怎么来的
使用Xamarin时输出错误
public List<GetFleet> GetDefaults(string xUserID)
{
string inJson =
List<GetFleet> tempList = new List<GetFleet>();
try
{
Uri serverUri2 = new Uri(inJson.ToString());
string rs2 = RequestGeoHttpAsString(serverUri2);
DataSet dataSet = JsonConvert.DeserializeObject<DataSet>(rs2);
DataTable dataTable = dataSet.Tables["Table1"];
foreach (DataRow row in dataTable.Rows)
{
tempList.Add(new GetFleet
{
FleetID = row["registrationNumber"].ToString(),
FleetName = row["Location"].ToString(),
FleetIgnition = row["Ignition"].ToString(),
FleetFuel1 = row["sFuel1"].ToString(),
FleetStartTime = row["startTime"].ToString()
});
}
}
catch (Exception ex)
{
string exe = ex.Message;
}
return tempList;
}
使用C语言实现右输出#
使用沙马林
public List<GetFleet> GetDefaults(string xUserID)
{
string inJson =
List<GetFleet> tempList = new List<GetFleet>();
try
{
Uri serverUri2 = new Uri(inJson.ToString());
string rs2 = RequestGeoHttpAsString(serverUri2);
DataSet dataSet = JsonConvert.DeserializeObject<DataSet>(rs2);
DataTable dataTable = dataSet.Tables["Table1"];
foreach (DataRow row in dataTable.Rows)
{
tempList.Add(new GetFleet
{
FleetID = row["registrationNumber"].ToString(),
FleetName = row["Location"].ToString(),
FleetIgnition = row["Ignition"].ToString(),
FleetFuel1 = row["sFuel1"].ToString(),
FleetStartTime = row["startTime"].ToString()
});
}
}
catch (Exception ex)
{
string exe = ex.Message;
}
return tempList;
}
public List GetDefaults(字符串xUserID)
{
字符串inJson=
列表模板列表=新建列表();
尝试
{
Uri serverUri2=新Uri(inJson.ToString());
字符串rs2=RequestGeoHttpPasString(serverUri2);
DataSet DataSet=JsonConvert.DeserializeObject(rs2);
DataTable=dataSet.Tables[“Table1”];
foreach(dataTable.Rows中的DataRow行)
{
添加(新的GetFleet)
{
FleetID=行[“注册号”]。ToString(),
FleetName=行[“位置”]。ToString(),
FleetIgnition=行[“点火”]。ToString(),
FleetFuel1=行[“sFuel1”]。ToString(),
FleetStartTime=行[“startTime”]。ToString()
});
}
}
捕获(例外情况除外)
{
字符串exe=ex.消息;
}
返回圣殿骑士;
}
使用C#
受保护的无效页面加载(对象发送方,事件参数e)
{
字符串url=
Uri serverUri2=新Uri(url.ToString());
字符串rs2=RequestGeoHttpPasString(serverUri2);
DataSet DataSet=JsonConvert.DeserializeObject(rs2);
DataTable=dataSet.Tables[“Table1”];
字符串json=JsonConvert.SerializedObject(数据集,格式化,缩进);
Response.Write(json);
}
公共字符串RequestGeoHttpPasstring(Uri地址)
{
字符串结果=”;
//创建web请求
HttpWebRequest request=System.Net.WebRequest.Create(地址)为HttpWebRequest;
//得到回应
使用(HttpWebResponse=request.GetResponse()作为HttpWebResponse)
{
//获取响应流
StreamReader=新的StreamReader(response.GetResponseStream());
//阅读全部内容并以字符串形式返回
结果=reader.ReadToEnd();
}
返回结果;
}
我在这件事上使用了另一种解决方案。
我在后端将日期转换为string/VARCHAR。
当它以JSON返回时,它将是文本。您收到的实际JSON是什么?看起来你得到了不同的数据。我想,你看的不是同一个记录。
fuel1的值也不同190.60
vs.191.16
的时间偏移量不会出现问题?日期时间序列化将受到您的区域设置的影响-您确定要测试的两个系统具有相同的区域设置吗?这可能是格式问题吗?反序列化时是否使用日期时间转换器?