こんばんは、
.NET FormアプリケーションのWebBrowserコントロールを利用してLeafletを表示させるものを作成しています。
予め入っている緯度経度などの情報が入った配列データを基にマップに経路を表示させる処理を作りたいと思っています。
C#側で作成したJson文字列をWebBrowserコントロールの「WebBrowser.Document.InvokeScript」で引数として渡して処理を実行しようとしたところ、Script側で受け取ることはできたのですが、JSON.parseができなくて困っています。
有識者の方、教えていただければ幸いです。
C#
1public string ConvertSerial() 2 { 3 var cnt = 0; 4 string jsonStr = "" + '['; 5 foreach(var data in SpanDataList_Day1) 6 { 7 JsonConv js = new JsonConv() 8 { 9 Time = data[1], 10 Route = new List<double> 11 { 12 // 緯度 13 double.Parse(data[2]), 14 // 経度 15 double.Parse(data[3]) 16 } 17 }; 18 jsonStr += JsonConvert.SerializeObject(js, Newtonsoft.Json.Formatting.Indented); 19 if (cnt + 1 != SpanDataList_Day1.Count) jsonStr += ','; 20 cnt++; 21 } 22 jsonStr += '];'; 23 return jsonStr; 24 }
jsonStr文字列の中身です [{ "Time": "16:25:00.00", "Route": [ 37.532716, 140.711684 ] }, { "Time": "16:25:00.60", "Route": [ 37.532713, 140.711682 ] }, { "Time": "16:25:1.20", "Route": [ 37.53271, 140.711679 ] }];
C#
1/// <summary> 2 /// Json用格納クラス 3 /// </summary> 4 [JsonObject("SpanData")] 5 class JsonConv 6 { 7 /// <summary> 8 /// 時間 9 /// </summary> 10 [JsonProperty("Time")] 11 public string Time; 12 /// <summary> 13 /// 経路 14 /// </summary> 15 [JsonProperty("Route")] 16 public List<double> Route; 17 }
C#
1JSへの引き渡し 2 3webBrowser1.Document.InvokeScript("PastRoute", new string[] {prbm.ConvertSerial()});
HTML
1<script type="text/javascript"> 2function PastRoute(data) { 3 var js = JSON.parse(data); 4 alert(js); 5} 6</script>
開発環境
VisualStudio 2017
NewtonSoft.Json 12.0.3
回答2件
あなたの回答
tips
プレビュー