使用C#将JSON代码导入Javascript文件

时间:2015-07-24 08:03:54

标签: javascript c# asp.net json

我已经使用NuGet Packet Newtonsoft JsonConvert生成了一些JSON代码。但我想要的是现在将该代码导入javascript文件,以便我可以创建一个谷歌地图。

我的Json代码如下所示:

[
    {
        "title": 'Alibaug',
        "lat": '18.641400',
        "lng": '72.872200',
        "description": 'Alibaug is a coastal town and a municipal council in Raigad District in the Konkan region of Maharashtra, India.'
    },
    {
        "title": 'Mumbai',
        "lat": '18.964700',
        "lng": '72.825800',
        "description": 'Mumbai formerly Bombay, is the capital city of the Indian state of Maharashtra.'
    },
    {
        "title": 'Pune',
        "lat": '18.523600',
        "lng": '73.847800',
        "description": 'Pune is the seventh largest metropolis in India, the second largest in the state of Maharashtra after Mumbai.'
    }
];

我使用的语言是asp.net表单项目中的C#。

还可以查看我之前的问题:https://stackoverflow.com/questions/31480598/make-routes-on-google-map-in-asp-net-website

任何解决我问题的想法?
感谢

3 个答案:

答案 0 :(得分:1)

如果您使用MVC,您可以这样做:

public Coordinates
{
    public string Title { get; set; }
    public string Lat { get; set; }
    public string Lng { get; set; }
    public string Description { get; set; }
}

public ActionResult GetCoordinates(){

    // get your coordinates
    List<Coordinates> coordinates = GetCoordinatesFromDatabase();

    var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
    var objectAsJsonString = serializer.Serialize(coordinates );

    return Json(objectAsJsonString);
}

然后在你的javascript中你只需要反序列化json:

var coordinates = null;

$.ajax({
    url: url,
    type: 'POST',
    dataType: 'json',
    success: function(result){
        coordinates = JSON.parse(result);
        // operate with your object
    }
});

我希望这对你有所帮助。

答案 1 :(得分:1)

为此,请发出ajax请求或使用&lt; %%&gt; .aspx页面上的表示法。第二个更容易:)

示例:

我有一个方法getMapJson(),它在MyWebPage.aspx页面的代码隐藏中返回我的Json。将它设置为静态非常重要,否则您无法通过MyWebPage.aspx调用它

namespace MyApplication
{
    public partial class MyWebPage : System.Web.UI.Page
    {
        public static string getMapJson()
        {
             //your code
             return json;
        }
    }
}

在MyWebPage.aspx页面的脚本中,执行以下操作:

var myJsonVariable = $.parseJSON('<%=MyApplication.MyWebPage.getMapJson()%>');

现在你的myJsonVariable已经反序列化了你的Json:)

您也可以导入静态专有而不是方法,但是您必须在不晚于Page_Load的情况下设置其值,因为&lt; %%&gt;内的内容每页加载只计算一次,因此除非您重新加载,否则不会更改。

答案 2 :(得分:0)