如何在Javascript中将字符串更改为哈希对象?

Nor*_*awa 1 javascript

这是字符串。

{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}
Run Code Online (Sandbox Code Playgroud)

我正在尝试转换成这样的哈希对象。

[    
{lat: -37.819616, lng: 144.968119},
{lat: -38.330766, lng: 144.695692}
]
Run Code Online (Sandbox Code Playgroud)

我应该如何使用Javascript?

[解决]我对如何在Javascript和JSON文件中表示哈希表示困惑。用JavaScript

var locations = [ {lat: 35.123, lng: 127.111}, {lat: 35.222, lng: 111.222} ];
Run Code Online (Sandbox Code Playgroud)

在JSON中

[
{ "lat": 35.123, "lng": 127.111 },
{ "lat": 35.222, "lng": 111.222}
]
Run Code Online (Sandbox Code Playgroud)

我混淆了两种写作方式。不管怎么说,还是要谢谢你。

Rak*_*hah 5

您的字符串不正确,JSON解析器将永远不会正确解析它。在这里,您不能使用eval()函数方法。它不像数组,而是HashMap或格式错误的对象。在您的情况下,您需要具有键值对组合的json。

{'lat': -37.819616, 'lng': 144.968119},
{'lat': -38.330766, 'lng': 144.695692}
Run Code Online (Sandbox Code Playgroud)

如果您的对象不包含子对象/数组,则可以使用以下代码。

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}");
Run Code Online (Sandbox Code Playgroud)

上面的代码会将您输入的字符串转换为对象数组。

但是,如果您实际上想要的是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}");
Run Code Online (Sandbox Code Playgroud)

请注意,当您开始使用它嵌套对象和数组时,上面的代码将变得更加复杂。这读帮了我很多关于使用数组对象和解析这个JSON的转换。如果您有除lat lng以外的任何键值对,它将可以正常工作。