获取Json格式的对象

时间:2011-06-02 05:30:04

标签: json

好的,所以我有一个大的JSON文件,其中包含我正在处理的谷歌地图项目控件的数组和对象设置......看起来像这样:

{
"settings":
{



    "DEFAULT_MAP_SETTING":  "DEFAULT_MAP_SETTINGS",

    "DEFAULT_MAP_RES":      "county",
    "DEFAULT_MAP_CAT":      "popden"
},

"map_settings":
{
    "DEFAULT_MAP_SETTINGS":
    {
        "map_options":
        {
            "center":               [39.828175, -94.5795],
            "mapTypeId":            "TERRAIN",
            "streetViewControl":    false,
            "scrollwheel":          false,
            "overviewMapControl":   false,
            "mapTypeControl":       false,
            "zoom":                 4
        },


        "map_bounds":
        {
            "upper-left":           [98.70, -127.50],
            "lower-right":          [48.85, -55.90]
        },




    }

}
}

我的问题是如何以json格式获取此数据,因为它必须采用json格式加载选项以及谷歌地图中没有的内容。比如我有

var myMapOptions = {
            "zoom": 4,
            "minZoom" : 4,
            "scrollWheel" : false,
            "center": initialLoc,
            "mapTypeId": google.maps.MapTypeId.ROADMAP,
    };

var theMap = new google.maps.Map(document.getElementById("map_canvas"), myMapOptions);

这会加载谷歌地图。但我无法弄清楚如何使用我的大Json文件设置myMapOptions。我所知道的每个方法都会返回字符串中的json数据并消除格式化。就像jQuery中的$ .ajax将为我获取json,但它会删除它的格式。

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:0)

如果您的请求带有JSON标头,jQuery $ .ajax()会自动将您的JSON“文件”转换为javascript对象。

但是,您可以使用$ .ajax的dataType重写此内容:

$.ajax({
  url: "test.html",
  dataType: "text",
  success: function(data){
    alert(data);
  }
});

上一个脚本会提示您想要的JSON文件。

<强> [更新] 您可以尝试使用eval():

$.ajax({
  url: "test.html",
  dataType: "text",
  success: function(data){
    var options = eval(data);
  }
});

在这种情况下,您的数据需要通过javascript执行。

[更新2] JsonP样式,你的json文件需要看起来像这样:

var options = {
   "zoom": 4, "minZoom" : 4,
   "scrollWheel" : false,
   "center": new google.maps.LatLng(39.828175, -94.5795),
   "mapTypeId": google.maps.MapTypeId.ROADMAP
};

请注意“var options =”

您的ajax请求需要看起来像这样:

$.ajax({
  url: "test.html",
  dataType: "text",
  success: function(data){
    alert(data);// will show your data as text
    eval(data); this will execute your "JSON file"

    //after eval you can now use options as a variable
    alert(options);
  }
});