从JSON连接字符串

时间:2014-06-16 22:30:41

标签: javascript json string esri arcgis-js-api

我想从ESRI几何中提取经度和纬度,并将它们连接成一个长字符串(用于API调用)。

我正在努力完成这个

几何体的ESRI文档(geometry specs)显示了对象的结构,但我的API调用需要以下格式的纬度/经度:

long1,lat1,long2,lat2,long3,lat3 ...  long1, lat1

我所要做的就是处理长/拉一点点。从ESRI文档中提供一个非常简单的示例

        MyTest = {
                    "rings": [
                        [
                            [-97.06138, 32.837],
                            [-97.06133, 32.836],
                            [-97.06124, 32.834],
                            [-97.06127, 32.832],
                            [-97.06138, 32.837]
                        ]
                    ],
                    "spatialReference": {
                        "wkid": 4326
                    }
                };

        alert(JSON.stringify(MyTest.rings[0]));

会给我戒指(经度/纬度)(注意第一个长/纬度重复为最后一个长/纬度)

我似乎无法弄清楚如何剥离[和]创建一个只有经度和纬度的字符串。例如:

myTest2 = MyTest.rings[0];  // get the longitudes and latitudes
myTest3 = JSON.stringify(myTest2);
myTest4 = myTest3.replace("[","");

alert(JSON.stringify(myTest2));

alert(JSON.stringify(myTest4));

替换将剥离其中一个括号,但是我不能让它像这篇文章stack javascript replace那样进行全局替换,因为我的编程环境都在ColdFusion中,我需要关于模式的引号。

有人可以指出我的错误吗?谢谢!

4 个答案:

答案 0 :(得分:2)

您可以使用Example

尝试此操作(join()
MyTest = { "rings": [...] };
var str = MyTest.rings.join();

结果(在str中)将是:

  

-97.06138,32.837,-97.06133,32.836,-97.06124,32.834,-97.06127,32.832,-97.06138,32.837

答案 1 :(得分:1)

你有一个对象,使用它 - 不要使用字符串化版本。

var coords = MyTest.rings[0];
var list = [];

for ( var i = 0; i < coords.length; ++i )
  {
    list.push(coords[i][0]);
    list.push(coords[i][1]);
  }

var str = list.join(',');

// str is now "-97.06138,32.837,-97.06133...(etc.)"

答案 2 :(得分:0)

这些是绝对的基础知识,但您不需要更换任何东西。 []只是一个JavaScript数组而不是字符串。

MyTest.rings.map(function (r) { return r.join(','); }).join(',');
// "-97.06138,32.837,-97.06133,32.836,-97.06124,32.834,-97.06127,32.832,-97.06138,32.837"

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/join

答案 3 :(得分:0)

DEMO:http://jsfiddle.net/gunderjt/B5wsK/2/

MyTest.rings[0].join()

并加入没有参数自动用逗号描述