我有一个字符串[{"Latitude":8.55701,"Longitude":76.880934},{"Latitude":8.55701,"Longitude":76.880935},{"Latitude":8.55701,"Longitude":76.880935}]
我希望输出为[{8.55701,76.880934},..etc]
只有数字。
这是一个JSON字符串 -
<script type="text/javascript">
var myVar = ' <%= request.getAttribute("Map") %>'; /* retrieve json from request attribute */
var result = myVar.split(',',2);
var latitude = parseFloat(result[0].replace('"Latitude":',''));
var longitude = parseFloat(result[1].split(':'));
alert(latitude);
</script>
我试过但没有得到它。
答案 0 :(得分:2)
使用简单的正则表达式删除字符串:
.replace(/\"\w+\":/g, '');
'[{"Latitude":8.55701,"Longitude":76.880934},{"Latitude":8.55701,"Longitude":76.880935},{"Latitude":8.55701,"Longitude":76.880935}]'.replace(/\"\w+\":/g, '');
如果您想获取值,可以使用JSON.parse:
var coords = JSON.parse('[{"Latitude":8.55701,"Longitude":76.880934},{"Latitude":8.55701,"Longitude":76.880935},{"Latitude":8.55701,"Longitude":76.880935}]');
// And loop
coords.forEach(function(coord) {
console.log('latitude', coord.Latitude);
console.log('longitude', coord.Longitude);
});
答案 1 :(得分:1)
试试这个,这个函数将返回一个你预期的字符串。
function pareseJSONStr(str){
var json = JSON.parse(str);
var rslt = [];
json.forEach(function(obj){
rslt.push("{" + obj.Latitude + ", " + obj.Longitude + "}");
});
return "[" + rslt.join(",") + "]"
}
将此功能称为
var mystr = '[{"Latitude":8.55701,"Longitude":76.880934},{"Latitude":8.55701,"Longitude":76.880935},{"Latitude":8.55701,"Longitude":76.880935}]';
pareseStr(mystr);
返回一个字符串
"[{8.55701, 76.880934},{8.55701, 76.880935},{8.55701, 76.880935}]"
答案 2 :(得分:0)
如果您真的想要您的奇怪数据格式,请使用它:
var convertStrange = function( string ) {
return '[' + JSON.parse( string ).map( function( item ) {
return '{' + [ item.Latitude, item.Longitude ].join( ',' ) + '}';
} ).join( ',' ) + ']';
};
所以,
convertStrange('[{"Latitude":8.55701,"Longitude":76.880934},{"Latitude":8.55701,"Longitude":76.880935},{"Latitude":8.55701,"Longitude":76.880935}]')
将返回字符串
[{8.55701,76.880934},{8.55701,76.880935},{8.55701,76.880935}]
答案 3 :(得分:0)
{8.55701,76.880934}
是错误的对象构造。对象必须是名称:值对,因此它只能是
{name1:8.55701, name2:76.880934}
或者您可以使用像
这样的数组[[8.55701, 76.880934], ... ]
如果你想把它作为一个字符串使用它;
var string = '[{"Latitude":8.55701,"Longitude":76.880934}, {"Latitude":8.55701,"Longitude":76.880935}, {"Latitude":8.55701,"Longitude":76.880935}]';
var newString = string.replace(/\"Latitude\":|\"Longitude\":/g, "");