Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSON.parse()未给出预期结果_Javascript_Json - Fatal编程技术网

Javascript JSON.parse()未给出预期结果

Javascript JSON.parse()未给出预期结果,javascript,json,Javascript,Json,我有一个字符串,它是由/r分隔的JSON值。这有点像数据库表中的记录。它看起来像: “{”id:“id”,“hole:“hole”,“stat:“stat”,“value:“value”}/r{”id:“1354075540949”,“hole:“1”,“stat:“score”,“value:“4”}/r{”id:“1354075540949”,“hole:“1”,“stats”,“value:“1”}/r{”id:“1354075540949”,“hole:“1”,“stat:“fir”,“

我有一个字符串,它是由/r分隔的JSON值。这有点像数据库表中的记录。它看起来像:

“{”id:“id”,“hole:“hole”,“stat:“stat”,“value:“value”}/r{”id:“1354075540949”,“hole:“1”,“stat:“score”,“value:“4”}/r{”id:“1354075540949”,“hole:“1”,“stats”,“value:“1”}/r{”id:“1354075540949”,“hole:“1”,“stat:“fir”,“value:“y”}/r{”id:“13540755409”,“hole:“1”,“stat:“gir”,“value:“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]));
其中func是:

function (v) { return v.id == gCurrentRoundID && v.hole == gCurrentHole; }
但不确定为什么会将id设置为true/false

[编辑二]


没关系,我发现了我的错误。上面的函数不是正确的函数,我使用的函数只有1个等号表示v.id=gcurrentrundid,这就是为什么它将其设置为true/false。

我只需手动将整个字符串更改为有效的JSON。让它以
[
开头,以
]
结尾,然后用逗号替换所有的
/r
。最终结果应该是

var changeRecords = jQuery.grep(data, func);
“[{”id:“id”,“hole:“hole”,“stat:“stat”,“value:“value”},{”id:“1354075540949”,“hole:“1”,“stat:“score”,“value:“4”},{”id:“score”,“value:“hole:“1”,“stat:“stat:”1“,{”id:“1354075540949”,“hole:“1”,“stat:“fir”,“value:“y”},{”id:“1354075540949”,“hole:“1”,“stat:“stat:“gir”,“value:“n”},”

然后通过
JSON.parse


请注意,最后一个尾随逗号可能会导致IE8出现问题。如果是这样,您应该能够相当轻松地手动修复该问题。类似于
s=s.substr(0,s.length-2)+']

对我来说很好用。在chrome上测试。你在哪里测试代码的?它在firefox.IE 10的Win 8 box中运行。当我在VisualStudio中将鼠标移到id值上时,它只会显示true或false。对我来说似乎也很好。。。好的,看来这是可行的,问题是在填充数组后运行的jQuery.grep()。更新了帖子,但仍然存在问题。我以前从未使用过这种语法(javascript新手)。整个事情上的JSON.parse()会返回一个对象数组,然后就可以开始了吗?谢谢,我会做出更改,让事情变得更简单!