【发布时间】:2021-12-18 01:52:59
【问题描述】:
我正在做一个天气预报控制台应用程序。我询问用户是否要保存输入位置。当他们输入经度和纬度时,它会保存在 JSON 文件中,因此稍后(第二次尝试)他们可以从列表中选择城市。问题是当城市对象保存在 JSON 文件中时,它不在数组中,这就是为什么后来我没有显示列表的原因。
程序.cs
//saving city objcet in JSON file
if (userLoc == 1)
{
IConfiguration citConfiguration = new Configuration("cities.json");
var CitiesConfig = new City()
{
Id = 1,
CityName = $"{weatherInfo.Timezone}",
Lng = weatherInfo.Longitude,
Lat = weatherInfo.Latitude
};
citConfiguration.SetConfigs(CitiesConfig);
}
City.cs
using Weather.PCL.Models.Abstractions;
using Configs.Models.Abstractions;
namespace Weather.PCL.Models.Implementations
{
public class City : ICity, IConfig
{
public int Id { get; set; }
public string CityName { get; set; }
public double Lng { get; set; }
public double Lat { get; set; }
}
}
设置配置
public bool SetConfigs(IConfig config)
{
try
{
using (StreamWriter sw = new StreamWriter(_path))
{
var json = JsonConvert.SerializeObject(config);
sw.Write(json);
sw.Close();
return true;
}
}
catch (Exception ex)
{
return false;
}
}
在 JSON 文件中显示城市列表
var citiesJson = configuration.GetConfigs();
var citiesArray = JsonConvert.DeserializeObject<City[]>(citiesJson);
foreach (var item in citiesArray)
{
Console.WriteLine(item.Id + ". " + item.CityName);
}
当我运行项目时,我得到一个异常Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'Weather.PCL.Models.Implementations.City[]'
我能做什么?
【问题讨论】:
-
您正在将一个对象反序列化为数组...提供 json 以获得明确的答案
-
json 一开始是空的
-
如果你希望它为空,你的 json 应该是
[]。不能是{}
标签: c# arrays json object config