我有一个由/ r分隔的JSON值字符串。它有点像数据库表中的记录。它看起来像:
“{” ID “:” ID”, “孔”: “洞”, “统计”: “统计”, “值”: “值”} / R { “ID”:1354075540949, “洞”: “1”, “统计”: “得分”, “值”: “4”} / R { “ID”:1354075540949, “洞”: “1”, “统计”: “推杆”, “值”:” 1 “} / R {” ID “:1354075540949,” 洞 “:” 1" , “统计”: “冷杉”, “值”: “Y”} / R { “ID”:1354075540949, “洞”:” 1" , “统计”: “GIR”, “值”: “N”} / R“
第一行是列名(id,hole,stat,value),我只给它们相同的值。由/ r分隔的所有其他行是实际数据。
我用/ r分割这个字符串,然后遍历结果并将每个元素的JSON.parse()结果推送到一个数组,所以现在我有一个具有给定结构属性的对象数组(id,hole ,stat,value)。 一切正常,除了'id'字段最终为真或假而不是大长号。为什么这样做?
var tblData = localStorage.getItem(tblName).split("/r");
var data = new Array();
// fill the array
for (i = 1; i < tblData.length - 1; i++)
data.push(JSON.parse(tblData[i]));
[编辑] 似乎这确实有效,但是有一个jQuery.grep()我在此之后运行,它将id属性设置为true / false。
var changeRecords = jQuery.grep(data, func);
func是:
function (v) { return v.id == gCurrentRoundID && v.hole == gCurrentHole; }
不知道为什么会将id设置为true / false。
[EDIT2]
没关系,我发现了我的错误。上面的函数不是正确的函数,而我所做的函数只有v.id = gCurrentRoundID的1个等号,这就是为什么它将它设置为true / false。
答案 0 :(得分:3)
我只需手动将整个字符串更改为有效的JSON。以[
开头,以]
结尾,然后用逗号替换所有/r
。最终结果应该是
“[{” ID “:” ID”, “孔”: “洞”, “统计”: “统计”, “值”: “值”},{ “ID”:1354075540949, “洞”: “1”, “统计”: “得分”, “值”: “4”},{ “ID”:1354075540949, “洞”: “1”, “统计”: “推杆”, “值”:“1 “},{” ID “:1354075540949,” 洞 “:” 1" , “统计”: “冷杉”, “值”: “Y”},{ “ID”:1354075540949, “洞”: “1”, “统计”: “GIR”, “值”: “N”},]“
然后通过JSON.parse
请注意,最后一个尾随逗号可能会导致IE8出现问题。如果是这样,您应该能够相当容易地手动修复它。像s = s.substr(0, s.length - 2) + ']';