2013-03-09 117 views
2

我想显示使用谷歌地图页面上2个地方之间的距离。简单的JSON帮手请求 - webmatrix /剃须刀

所以我已经找到了如何写URL,但我不知道如何解码响应并在我的网站上显示?这是我到目前为止:

string distancematrix = "http://maps.googleapis.com/maps/api/distancematrix/json?  origins=34746+Florida&destinations=Universal+Studios+Florida|Orlando+Internation+Airport&mode=driving&units=imperial&sensor=false"; 
Json.Write(distancematrix, Response.ToString); 

我可以把每个结果放到页面使用@命令吗?

谢谢,加文

+0

是的,你可以使用“@”剃刀语法。 – VoidKing 2013-03-11 16:57:29

+0

另外,如果我正确理解你的问题,你应该可以使用“Json.Decode()”来解码json。你在问什么? – VoidKing 2013-03-11 16:58:24

+0

这是迄今为止编写的代码,但它不起作用。我只是想能够把结果拉出来。 – Gavin5511 2013-03-11 21:17:41

回答

0

这是一个(简单的)例子CSHTML页从外部文件,而不是外部的网站获得的数据,但它可以帮助你,但是:

@{ 
    var json = File.ReadAllText(Server.MapPath("~/TestJSON.json")); 
    var data = Json.Decode(json); 
} 

<html> 
    <head> 
    </head> 
    <body> 
     <p> 
      @data.destination_addresses <br/> 
      @data.origin_addresses <br/> 
      @data.rows <br/> 
      @data.status 
     </p> 
    </body> 
</html> 

我不知道(因为我用我不习惯看到的方式编写的JSON语法,因此我有点不习惯),但是看起来像使用括号(即“[”和“]”)表示使用数组?

如果您正在访问数组这样,它可能是这个样子:

@{ 
    var json = File.ReadAllText(Server.MapPath("~/TestJSON.json")); 
    var data = Json.Decode(json); 
    var i = 0; 
} 

<html> 
    <head> 
    </head> 
    <body> 
     <p> 
      @{ 
       while(i < data.destination_addresses.Length) 
       { 
        data.destination_addresses[i]; <br/> 
        i++; 
       } 
      } 
     </p> 
    </body> 
</html> 

只要让我知道,如果这没有帮助,我们可以从那里。

+0

@ Gavin5511您的JSON数据路径可能更像这样:var json = File.ReadAllText(“http://maps.googleapis.com/maps/api/distancematrix/json?originins = 34746 + Florida&destinations = Universal +工作室+佛罗里达州|奥兰多+国际+机场&mode = driving&units = imperial&sensor = false“)但我无法确定,因为我从未试图寻找另一个用于JSON数据的网址。此外,该方法确实会说“File.ReadAllText”,它可能不会期望一个完整的外部网址,我不确定... – VoidKing 2013-03-11 21:46:32