我使用json2csharp生成了类。
var content = response.Content;
中有好处
我也对主要类进行了反序列化:
var responseData1 = JsonConvert.DeserializeObject<RootObjectChangeLocation>(content);
但是我需要从这个类中检索lat和lng:
public class Location
{
public double lat { get; set; }
public double lng { get; set; }
}
我试图让var responseData1 = JsonConvert.DeserializeObject<Location>(content);
来检索坐标。但如果直接执行此操作,则lat
中的lng
和responseData1
为空。我怎么能得到它们?
这是由json2csharp生成的代码:
public class AddressComponent
{
public string long_name { get; set; }
public string short_name { get; set; }
public List<string> types { get; set; }
}
public class Northeast
{
public double lat { get; set; }
public double lng { get; set; }
}
public class Southwest
{
public double lat { get; set; }
public double lng { get; set; }
}
public class Bounds
{
public Northeast northeast { get; set; }
public Southwest southwest { get; set; }
}
public class Location
{
public double lat { get; set; }
public double lng { get; set; }
}
public class Northeast2
{
public double lat { get; set; }
public double lng { get; set; }
}
public class Southwest2
{
public double lat { get; set; }
public double lng { get; set; }
}
public class Viewport
{
public Northeast2 northeast { get; set; }
public Southwest2 southwest { get; set; }
}
public class Geometry
{
public Bounds bounds { get; set; }
public Location location { get; set; }
public string location_type { get; set; }
public Viewport viewport { get; set; }
}
public class Result
{
public List<AddressComponent> address_components { get; set; }
public string formatted_address { get; set; }
public Geometry geometry { get; set; }
public string place_id { get; set; }
public List<string> types { get; set; }
}
public class RootObjectChangeLocation
{
public List<Result> results { get; set; }
public string status { get; set; }
}
jsonString是:
{
"results" : [
{
"address_components" : [
{
"long_name" : "Vinnytsia",
"short_name" : "Vinnytsia",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Vinnyts'ka city council",
"short_name" : "Vinnyts'ka city council",
"types" : [ "administrative_area_level_3", "political" ]
},
{
"long_name" : "Vinnyts'ka oblast",
"short_name" : "Vinnyts'ka oblast",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "Ukraine",
"short_name" : "UA",
"types" : [ "country", "political" ]
}
],
"formatted_address" : "Vinnytsia, Vinnyts'ka oblast, Ukraine",
"geometry" : {
"bounds" : {
"northeast" : {
"lat" : 49.27902,
"lng" : 28.5710879
},
"southwest" : {
"lat" : 49.190448,
"lng" : 28.3681799
}
},
"location" : {
"lat" : 49.233083,
"lng" : 28.468217
},
"location_type" : "APPROXIMATE",
"viewport" : {
"northeast" : {
"lat" : 49.27902,
"lng" : 28.5710879
},
"southwest" : {
"lat" : 49.1906116,
"lng" : 28.3681799
}
}
},
"place_id" : "ChIJiWRaGWVbLUcR_nTd7lnh1Ms",
"types" : [ "locality", "political" ]
}
],
"status" : "OK"
}
答案 0 :(得分:0)
@dbc帮我找到了根据这个link
的解决方案 get_coordinates.Click += delegate
{
string city_val = change_location.Text;
var client = new RestClient("https://maps.googleapis.com/maps/api/geocode/json?address=");
var request = new RestRequest(city_val, Method.GET);
IRestResponse response = client.Execute(request);
var content = response.Content;
var responseData1 = JsonConvert.DeserializeObject<RootObjectChangeLocation>(content);
if (content == null||content=="")
{
Toast.MakeText(this, "City is empty or incorrect", ToastLength.Short).Show();
}
else
{
foreach(var data in responseData1.results)
{
var lat = data.geometry.location.lat;
}
}
// Toast.MakeText(this, content, ToastLength.Long).Show();
Console.WriteLine(content.ToString());
};