Ich bin ein javascript Array von datareader in c#. Der c# Code ist hier:Analysieren und Formatieren von JSON-Array von SQL-Datareader JavaScript
public string ConvertDataTabletoString() {
DataTable dt = new DataTable();
//
SqlConnection conn = new SqlConnection();
SqlCommand cmd = new SqlCommand();
string connStr = ConfigurationManager.ConnectionStrings["FurnitureDB"].ConnectionString;
conn.ConnectionString = connStr;
conn.Open();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.Connection = conn;
cmd.CommandText = "GetLatLongPins_active";
SqlDataReader datareader = cmd.ExecuteReader();
//var dt = new DataTable();
dt.Load(datareader);
//con.Open();
System.Data.SqlClient.SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
System.Web.Script.Serialization.JavaScriptSerializer serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
List<Dictionary<string, object>> rows = new List<Dictionary<string, object>>();
Dictionary<string, object> row;
foreach(DataRow dr in dt.Rows) {
row = new Dictionary<string, object>();
foreach(DataColumn col in dt.Columns) {
row.Add(col.ColumnName, dr[col]);
}
rows.Add(row);
}
return serializer.Serialize(rows);
}
Das Array, der zurückgegeben wird wie folgt aussieht:
var markers = JSON.parse('[{"Latitude":34.257179,"Longitude":-119.234190,"Active":true},{"Latitude":34.257179,"Longitude":-119.234190,"Active":true},{"Latitude":40.554306,"Longitude":-81.921422,"Active":true},{"Latitude":40.906651,"Longitude":-97.093629,"Active":true},{"Latitude":29.431261,"Longitude":-97.171709,"Active":true},{"Latitude":34.257179,"Longitude":-119.234190,"Active":true},{"Latitude":34.257179,"Longitude":-119.234190,"Active":true},{"Latitude":40.554306,"Longitude":-81.921422,"Active":true},{"Latitude":40.906651,"Longitude":-97.093629,"Active":true},{"Latitude":29.431261,"Longitude":-97.171709,"Active":true}]');
Ich brauche es zu analysieren, so dass es wie dies für die Google Maps API aussieht:
var waypts = [{
location: '34.257179, -119.234190',
stopover: true
}, {
location: '34.257179, -119.234190',
stopover: true
}, {
location: '40.554306, -81.921422',
stopover: true
}, {
location: '40.906651, -97.093629',
stopover: true
}, {
location: '29.431261, -97.171709',
stopover: true
}, ]
Ich habe eine Reihe von Variationen versucht, wenn ich es auf nur ein Stück zurückschneiden kann ich das Ergebnis erstellen, das ich will, zum Beispiel:
Dies erzeugt die Ausgabe Ich brauche für Google Maps
Ort: 34,257179, -119,23419, etappen: true
Aber wenn ich versuche, eine Schleife über die Daten zu tun, ich bin kämpfen, damit es funktioniert. Einer meiner Versuche sieht so aus:
var obj = JSON.parse('{"Latitude":34.257179,"Longitude":-119.234190,"Active":true}', {
"Latitude": 29.431261,
"Longitude": -97.171709,
"Active": true
}]
');
for (i = 0; i < obj.length; i++) {
x += obj.Latitude[i] + "<br>";
}
document.getElementById("demo").innerHTML = x;
Ich teste, indem ich die Ausgabe an ein Ausgabefenster sende. Wenn ich den obigen Code ausführe, bekomme ich nichts, keine Ausgabe. Ich habe versucht, mein Beispiel mit den vielen verfügbaren Beispielen zu korrelieren, hatte aber keinen Erfolg. Danke für die Empfehlungen.
Hier ist ein Stack-Snippet basierend auf der Anfrage, die ich zuvor nicht verwendet hatte, aber ich sehe, dass mein Code einen Fehler erzeugt. Das sollte hilfreich sein. Ich werde das auch weiter betrachten.
<!DOCTYPE html>
<html>
<body>
<h2>Create Object from JSON String</h2>
<p id="demo"></p>
<script>
var x = [];
var obj = JSON.parse('[{"Latitude":34.257179,"Longitude":-119.234190,"Active":true},{"Latitude":34.257179,"Longitude":-119.234190,"Active":true},{"Latitude":40.554306,"Longitude":-81.921422,"Active":true},{"Latitude":40.906651,"Longitude":-97.093629,"Active":true},{"Latitude":29.431261,"Longitude":-97.171709,"Active":true},{"Latitude":34.257179,"Longitude":-119.234190,"Active":true},{"Latitude":34.257179,"Longitude":-119.234190,"Active":true},{"Latitude":40.554306,"Longitude":-81.921422,"Active":true},{"Latitude":40.906651,"Longitude":-97.093629,"Active":true},{"Latitude":29.431261,"Longitude":-97.171709,"Active":true}]');
for (i = 0; i < obj.length; i++) {
x += obj.Latitude[i] + "<br>";
}
document.getElementById("demo").innerHTML = x;
</script>
</body>
</html>
wo die Start C# -Code Stop und die Javascript-Code funktioniert? Kannst du das (clientseitige, nehme ich an) Javascript als [StackSnippet] (https://stackoverflow.blog/2014/09/16/introducing-runnable-javascript-css-and-html-code-snippets/) ? –
Ich habe den StackSnippet im ursprünglichen Post hinzugefügt. Es erzeugt einen Fehler, der hilfreich ist. Ich werde das überprüfen. – bairdmar
Wenn Sie Ihr Javascript in das Javascript-Feld des Snippets trennen, klicken Sie auf die Schaltfläche "Aufräumen". Es gibt einen oder zwei Syntaxfehler, die sofort offensichtlich werden. Auch, [hier ist mehr über JS-Debugging] (https: // www.w3schools.com/js/js_debugging.asp). –