【发布时间】:2021-04-27 10:11:03
【问题描述】:
我正在尝试将从 https://my-json-server.typicode.com/dskato/UDLAProyectoApi/posts 检索到的 JSON 字符串转换为我的“客户”对象列表
数据很好,但是当我尝试反序列化时,没有任何反应,数据不为空,但无法使用 System.Diagnostics.Debug.WriteLine(); 打印它看看发生了什么
我的模型: 客户.cs
public class Customer
{
private CustomerType _customerType;
public int Id { get; set; }
public string Name { get; set; }
public string Title { get; set; }
public string Phone { get; set; }
public string Address { get; set; }
public string Description { get; set; }
public double Longitude { get; set; }
public double Latitude { get; set; }
public DateTime? FullyAttendedTime { get; set; }
public Geoposition GeoLocation => new Geoposition { Latitude = Latitude, Longitude = Longitude };
public CustomerStatus CurrentStatus
{
get
{
return CustomerStatus.Resolving;
}
}
public CustomerType CustomerCategory
{
get { return _customerType; }
set { _customerType = value; }
}
}
CustomStatus.cs
public enum CustomerStatus
{
AwaitingTaxi = 1,
Resolving = 2,
Resolved = 3
}
CustomerType.cs
public enum CustomerType
{
Business = 1,
Group = 2,
Anonymous = 3
}
我的数据: 数据存储库.cs
public static class DataRepository
{
private static string _content;
private static IList<Customer> _customerList;
public static IList<Customer> LoadCustomerData()
{
//WriteFile();
return _customerList ??
(_customerList =
LoadData<IList<Customer>>(GlobalSetting.CustomerJsonDataFile));
}
public static async Task WriteFile()
{
string content = await LoadDataTest();
_content = content;
System.Diagnostics.Debug.WriteLine(content);
System.Diagnostics.Debug.WriteLine("AAAAAAAAAAAAHHHHH");
}
static async Task<string> LoadDataTest()
{
var request = new HttpRequestMessage();
request.RequestUri = new System.Uri("https://my-json-server.typicode.com/dskato/UDLAProyectoApi/posts");
request.Method = HttpMethod.Get;
request.Headers.Add("Accept", "application/json");
var client = new HttpClient();
HttpResponseMessage response = await client.SendAsync(request);
if (response.StatusCode == System.Net.HttpStatusCode.OK)
{
string content = await response.Content.ReadAsStringAsync();
return content;
}
else
{
return "";
}
}
private static T LoadData<T>(string dataFileName)
{
var assembly = typeof(DataRepository).GetTypeInfo().Assembly;
string preparedDataFileName = string.Format("MyTaxiCompany02.{0}",
dataFileName.Replace("/", "."));
Stream stream = assembly.GetManifestResourceStream(preparedDataFileName);
if (stream == null)
{
return default(T);
}
using (StreamReader sr = new StreamReader(stream))
{
var ret = JsonConvert.DeserializeObject<T>(sr.ReadToEnd());
System.Diagnostics.Debug.WriteLine("DATAA");
System.Diagnostics.Debug.WriteLine(ret);
return ret;
}
}
}
所以我尝试的是这样的:
private static T LoadData<T>(){
var ret = JsonConvert.DeserializeObject<T>(_content);
return ret;
}
public static IList<Customer> LoadCustomerData()
{
return _customerList ??
(_customerList =
LoadData<IList<Customer>>());
}
但什么也没发生
LoadData Original 正在工作,仅从我的项目中的文件读取,但我需要的是读取来自该 Api 的信息
在 LoadDataTest() 方法中工作正常,我在写入文件中调用它们 o 得到这样的字符串:
{
"Id": 1,
"Phone": "(555) XXX-XXXX",
"Name": "Jhon Doe",
"Title": "Jhon Doe",
"Address": "Calle Dr. Miguel Ríos Sarmiento, 3, 41020 Sevilla, Spain",
"Description": "Quick business trip to city center.",
"UpdateDescription": "",
"Latitude": -0.1674027763646159,
"Longitude": -78.47094603889924,
"CustomerType": 1,
"Taxis": [
{
"id": 3
}
],
"CustomerCategory": 1
},
{
"Id": 2,
"Phone": "(555) XXX-XXXX",
"Name": "Anna Doe",
"Title": "Anna Doe",
"Address": "Av. del Deporte, 33, 41020 Sevilla, Spain",
"Description": "You need to go to the nearest hospital.",
"UpdateDescription": "",
"Latitude": -0.1698626865861518,
"Longitude": -78.47514771904376,
"Taxis": [
{
"id": 3
}
],
"CustomerCategory": 2
},
{
"Id": 3,
"Phone": "(555) XXX-XXXX",
"Name": "Jhon Doe",
"Title": "Jhon Doe",
"Address": "Calle Dr. Miguel Ríos Sarmiento, 3, 41020 Sevilla, Spain",
"Description": "Quick business trip to city center.",
"UpdateDescription": "",
"Latitude": -0.16288897268889635,
"Longitude": -78.47435378522721,
"CustomerType": 1,
"Taxis": [
{
"id": 3
}
],
"CustomerCategory": 3
}
] ```
【问题讨论】:
-
尽量减少重现问题的代码。
标签: c# arrays json object serialization