[英]c# geocoding it only reads the first array in the json string
i am currently writing a method to geocode my postal codes and storing them in my sql database Below is an example of my codes: 我目前正在编写一种对邮政编码进行地理编码并将其存储在sql数据库中的方法,以下是我的代码示例:
Problem: There are two arrays in the 'json' string. 问题:“ json”字符串中有两个数组。 However, when i try to geocode, it only geocode the postal code in the first array and not the second.
但是,当我尝试进行地理编码时,它仅对第一个数组中的邮政编码进行地理编码,而不对第二个数组中的邮政编码进行地理编码。 How should I go about doing to geocode the postal code in the second array as well.
我还应该如何对第二个数组中的邮政编码进行地理编码。
protected void getGeoCode()
{
string json = DAO.getLatLongNull();
JObject jobject = JObject.Parse(json);
JArray array = (JArray)jobject["e"];
string postalCode = string.Empty;
string glat = string.Empty;
string glong = string.Empty;
string gPostal = string.Empty;
string sqlQuery = string.Empty;
string connectionString = DAO.GetConnectionString();
SqlConnection sqlConn = new SqlConnection(connectionString);
sqlConn.Open();
foreach (var item in array)
{
postalCode = item["postalCode"].ToString();
string url = "https://maps.googleapis.com/maps/api/geocode/json?sensor=false&address=Singapore%20";
dynamic googleResults = new Uri(url + postalCode).GetDynamicJsonObject();
foreach (var result in googleResults.results)
{
glat += result.geometry.location.lat;
glong += result.geometry.location.lng;
gPostal += item["postalCode"].ToString();
sqlQuery = "update testlatlong set lat =@lat,long =@long where postalCode =@postal";
SqlCommand command = new SqlCommand(sqlQuery, sqlConn);
command.Parameters.Add("@lat", SqlDbType.NVarChar).Value = glat;
command.Parameters.Add("@long", SqlDbType.NVarChar).Value = glong;
command.Parameters.Add("@postal", SqlDbType.NVarChar).Value = gPostal;
command.ExecuteNonQuery();
}
}
}
I managed to solve this: 我设法解决了这个问题:
protected void getGeoCoding()
{
string postalCode = string.Empty;
string glat = string.Empty;
string glong = string.Empty;
string gPostal = string.Empty;
string sqlUpdateQuery = string.Empty;
string sqlGetQuery = string.Empty;
string json = DAO.getNullLatLong();
JObject jobject = JObject.Parse(json);
JArray items = (JArray)jobject["e"];
JObject item;
JToken jtoken;
string connectionString = DAO.GetConnectionString();
SqlConnection sqlConn = new SqlConnection(connectionString);
sqlConn.Open();
for (int i = 0; i < items.Count; i++) //loop through rows
{
item = (JObject)items[i];
jtoken = item.First;
while (jtoken != null)//loop through columns
{
postalCode = item["postalCode"].ToString();
string url = "https://maps.googleapis.com/maps/api/geocode/json?sensor=false&address=Singapore%20";
dynamic googleResults = new Uri(url + postalCode).GetDynamicJsonObject();
foreach (var result in googleResults.results)
{
glat += result.geometry.location.lat;
glong += result.geometry.location.lng;
gPostal += postalCode;
sqlUpdateQuery = "update latlongDB set lat =@lat,long =@long where postalCode =@postal";
SqlCommand updateCommand = new SqlCommand(sqlUpdateQuery, sqlConn);
updateCommand.Parameters.Add("@lat", SqlDbType.NVarChar).Value = glat;
updateCommand.Parameters.Add("@long", SqlDbType.NVarChar).Value = glong;
updateCommand.Parameters.Add("@postal", SqlDbType.NVarChar).Value = gPostal;
updateCommand.ExecuteNonQuery();
}
}
jtoken = jtoken.Next;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.