我有一个这种格式的文本文件:
[[Line1TextA,[Lat,Long]], [Line1TextB,[Lat,Long]], ...]
[[Line2TextC,[Lat,Long]], [Line2TextD,[Lat,Long]], ...]
.
.
.
我正在解析一个文本文件(完成),我想将数组格式的字符串转换为实际数组,并将它们存储为要使用的变量。
我尝试使用JSON.parse,如下所示:Convert string containing arrays to actual arrays但我无法使其工作(语法错误)。这是我的尝试:https://jsfiddle.net/5yz95ktg/
var myStr = '[[Line1TextA,[Lat,Long]], [Line1TextB,[Lat,Long]]]'
var myArr = JSON.parse(myStr);
var myArr = JSON.parse("[" + myStr + "]");
修改
function readFile(query) {
$.get('file.txt', function(data) {
var lines = data.split("\n");
for (var i = 0, len = lines.length; i < len; i++) {
if (lines[i].indexOf(query) > -1) { // Found a match
var myArr = JSON.parse(lines[i]); // #NOT WORKING
}
}
});
}
答案 0 :(得分:0)
嗯,你需要确保它们是字符串:
var str = '[["Line1TextA",["Lat","Long"]],["Line1TextB",["Lat","Long"]]]'
所以改成它:
"
另外请确保在JSON中使用'
,因为UIViewControllerBasedStatusBarAppearance
无效。
答案 1 :(得分:0)
为简单起见,Javascript有两种类型的数组:数字和关联。这与其他语言类似,但实现方式略有不同。实际上,数组实际上是数组数组在数组对象中,关联是普通对象的对象。
以下是两种语法:
var numericArr = ['foo', 'bar', 'foobar', 42, false];
// numericArr[0] === 'foo'
// numericArr[3] === 42
var assocArr = {'type': 'foo', 'example': 'bar'};
// This can also be written as {type: 'foo'} (keys don't need quotes)
// assocArr['example'] === 'bar'
这些数组也可以嵌套,如下所示:
var mixedArr = {data: ['foo', 'bar'], success: false};
因此,在您的情况下,命名数组将需要包围它们的大括号,例如。
var myStr = '[{"Line1TextA":["Lat","Long"]}, {"Line1TextB":["Lat","Long"]}]'
另请注意数组键周围的引号。如果您希望JSON解析数据,则需要这样做。
如果您无法重写存储在文件中的数据,只要它采用一致的格式,您就可以使用正则表达式来执行字符串操作以正确格式化数据。
答案 2 :(得分:0)
您可以尝试使用正则表达式来放置引号,然后使用JSON.parse()将格式正确的json解析为数组。
var myStr = '[[Line1TextA,[Lat,Long]], [Line1TextB,[Lat,Long]]]';
var json = myStr.replace(/([^\[\],\s]+)/g, '"$&"');
var array = JSON.parse(json);
工作考试:https://jsfiddle.net/397owg7q/
您可能需要稍微更改正则表达式,这仅在您的数据没有空格或引号时才有效。