0

したがって、私のアプリでは JSON 文字列を取得する必要があります。都市または都市のリストを指定できます。

City クラスには、次のようなものがあります。

public class City
{
    public string id { get; set; }
    public string country { get; set; }
    public string region { get; set; }
    public string city { get; set; }
    public string latitude { get; set; }
    public string longitude { get; set; }
    public string comment { get; set; }
    public bool wasThereAnError { get; set; }

    public class CityResponse
    {
        public string status { get; set; }
        public string message { get; set; }
        //public City result { get; set; }
        public List<City> result { get; set; }
    }

そのため、List の結果を使用してデータを保存します。JSON配列を取得すると、これは正常に機能し、すべて簡単に保存できます。ただし、1 つの都市に対してクエリを実行すると、配列が必要であるという例外が発生します。これが私の呼び出しのコードです:

    async private Task<City.CityResponse> GetCityInformation(string url)
    {
        var client = new HttpClient();
        var response = await client.GetAsync(new Uri(url));
        string result = await response.Content.ReadAsStringAsync();
        var cityRoot = JsonConvert.DeserializeObject<City.CityResponse>(result);

        return cityRoot;
    }

リストに 1 つの都市も保存することはできますか? または、別の都市クラスを作成する必要がありますか、それともどうすればよいですか? ありがとう

4

2 に答える 2

1

それ以外の:

public class CityResponse
    {
        public string status { get; set; }
        public string message { get; set; }
        public List<City> result { get; set; }
    }

試す:

public class CityResponse
    {
        public string status { get; set; }
        public string message { get; set; }
        public string result { 
            get{ return null; }
            set{
                    // if 1st character is "[" then it's an array of City, otherwise a City object 
                    //depending on the above parse this string (which is like "{prop1: qqq, prop2: www}" 
                    // or like "[{prop1: qqq, prop2: www}, {prop1: eee, prop2: eee}]")
                    // by the existing serializer or other one 
                    // into City or array of cities
                    // if City, then convert in to array of cities
                    // and save result into realResult
            }
        }
        public List<City> realResult { get; set; }
于 2013-11-14T02:31:05.733 に答える