0

我有一个 json 文件,例如:{ total: 86, success: true, "rows": [ {"a1_id":"3231VB8",等等等等。

我的问题是,当使用 jquery 从例如这个 json 文件在谷歌地图中输入标记时,它不会这样做,直到我在 json 文件的开头替换<total: 86, success: true, "rows":>为。<"markers":>

好的,这样做没问题,但是当我这样做时,来自同一个 url/文件的另一个 json 请求被破坏了。

问题:我应该如何处理这个问题?有没有办法改变gmap代码来处理我的json文件或sh:

function(data) { 
    $.each( data.markers, function(i, m) {
            $('#map_canvas').gmap('addMarker', { 'position': new google.maps.LatLng(m.latitude, m.longitude), 'bounds':true } );
4

2 回答 2

0

所以本质上你是在问如何将 JSON 中的“rows”属性重命名为“markers”,因为“markers”是那些特定的 JS/jQuery 代码使用的?并且您需要在该代码中进行更改,以便现有的 JSON 可以被其他进程按原样使用?

如果是这样,为什么不在你的 JS/jQuery 代码中做以下小改动来引用“rows”属性而不是“markers”:

...
    $.each( data.rows, function(i, m) {
...

唯一的变化是传递给的第一个参数$.each()。JSON 中的“total”和“success”参数实际上不需要删除,因为您显示的代码(在我更改之前和之后)只是忽略了它们。

如果由于某种原因您需要实际修改data对象,我假设它是通过解析 JSON 创建的,您可以尝试以下操作:

    data = { "markers" : data.rows };

也就是说,创建一个具有单个属性“markers”的新对象,该属性从原始对象引用“rows”数组,然后重新分配data变量以指向新对象。然后只需$.each()按原样使用。

于 2012-05-16T07:38:16.557 回答
0

在使用JSONLint验证我的 JSON 输出后,我收到了在字符串“total”和“success”周围添加引号的建议。所以我做到了,并且 JSON 输出正确验证。

这导致 ExtJs 和 Google Maps 接受我的 JSON 文件。

请记住:如果一个应用程序正在接受您的 JSON (ExtJs),那不会说另一个也接受。(谷歌地图)。

于 2012-05-16T15:35:58.410 回答