这是字符串。
{lat: -37.819616, lng: 144.968119},
{lat: -38.330766, lng: 144.695692},
{lat: -39.927193, lng: 175.053218},
{lat: -41.330162, lng: 174.865694},
{lat: -42.734358, lng: 147.439506},
{lat: -42.734358, lng: 147.501315},
{lat: -42.735258, lng: 147.438000},
{lat: -43.999792, lng: 170.463352}
我正在尝试像这样转换为哈希对象。
[
{lat: -37.819616, lng: 144.968119},
{lat: -38.330766, lng: 144.695692}
]
我应该如何使用Javascript?
[已解决]我对如何在Javascript和JSON文件中表达哈希感到困惑。 在Javascript中
var locations = [ {lat: 35.123, lng: 127.111}, {lat: 35.222, lng: 111.222} ];
在JSON中
[
{ "lat": 35.123, "lng": 127.111 },
{ "lat": 35.222, "lng": 111.222}
]
我混淆了两种写作方式。不管怎样,谢谢。
答案 0 :(得分:3)
您的字符串不正确,JSON解析器永远不会正确解析它。在这里你不能使用eval()函数方法。它不像数组,而是HashMap或简单的格式错误的Object。在你的情况下,你需要json与键值对组合。
{'lat': -37.819616, 'lng': 144.968119},
{'lat': -38.330766, 'lng': 144.695692}
如果您的对象不包含子对象/数组,您可以使用以下代码。
function formatJSON2Array (str) {
var arr = [];
str = str.replace(/^\{|\}$/g,'').split(',');
for(var i=0,cur,pair;cur=str[i];i++){
arr[i] = {};
pair = cur.split(':');
arr[i][pair[0]] = /^\d*$/.test(pair[1]) ? +pair[1] : pair[1];
}
console.log("JSON Array>>> " +JSON.stringify(arr)); // it will print [{"a":12},{"b":"c"},{"foo":"bar"}] in console
return arr;
}
formatJSON2Array("{lat: -37.819616, lng: 144.968119},{lat: -38.330766, lng: 144.695692}");
上面的代码会将输入的字符串转换为对象数组。
但是,如果您确实需要HashMap(关联数组)而不是数组,请使用以下代码:
function FormatJSON2Object(str) {
var obj = {};
str = str.replace(/^\{|\}$/g,'').split(',');
for(var i=0,cur,pair;cur=str[i];i++){
pair = cur.split(':');
obj[pair[0]] = /^\d*$/.test(pair[1]) ? +pair[1] : pair[1];
}
console.log("JSON Object >>> "+ JSON.stringify(obj)); // it will return {"lat":" -37.819616"," lng":" 144.695692","{lat":" -38.330766"}
return obj;
}
FormatJSON2Object("{lat: -37.819616, lng: 144.968119},{lat: -38.330766, lng: 144.695692}");
请注意,当您开始使用它嵌套对象和数组时,上面的代码会变得复杂得多。对于使用数组对象和解析的JSON转换,这个th读取帮助了我很多。如果你有除lat lng之外的任何键值对,它将正常工作。
答案 1 :(得分:0)
这个简单的行应该这样做(如果需要,可以使用嵌套值):
carts = Cart.left_outer_joins(:product).select('carts.*, products.name as product_name')
cart = carts.first
cart.product_name
在此测试:
JSON.parse('[' + string.replace(/(\w+)\s*:/g, '"$1":') + ']')
答案 2 :(得分:-3)
UnknownError
{a:' b' }