I have a string that is JSON values separated by /r. It’s sort of like records in a DB table. It looks like:
“{“id”:”id”,”hole”:”hole”,”stat”:”stat”,”value”:”value”}/r{“id”:1354075540949,”hole”:”1″,”stat”:”score”,”value”:”4″}/r{“id”:1354075540949,”hole”:”1″,”stat”:”putts”,”value”:”1″}/r{“id”:1354075540949,”hole”:”1″,”stat”:”fir”,”value”:”y”}/r{“id”:1354075540949,”hole”:”1″,”stat”:”gir”,”value”:”n”}/r”
The first row is the column names (id, hole, stat, value) and I just give them the same value. All other rows separated by /r is the actual data.
I split this string by /r, then loop through the result and push the result of JSON.parse() of each element to an array so now I have an array of objects with properties of the given structure (id, hole, stat, value). Everything is working except the ‘id’ field ends up being true or false instead of the big long number. Why is it doing that?
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]));
[EDIT]
Seems this does work, but there is a jQuery.grep() I run right after this that’s setting the id properties to true/false.
var changeRecords = jQuery.grep(data, func);
Where func is:
function (v) { return v.id == gCurrentRoundID && v.hole == gCurrentHole; }
Not sure why it would be setting id to true/false though.
[EDIT2]
Nevermind, I found my error. The function above wasn’t the right one and the one I did have only had 1 equal sign for v.id = gCurrentRoundID, which is why it was setting it to true/false.
I would just manually change the whole string to valid JSON. Have it start with a
[and end with a], then replace all those/rs with commas. The end result should look likeThen parse that through
JSON.parseJust note that that last trailing comma may cause problems in IE8. If so, you should be able to manually fix that fairly easily. Something like
s = s.substr(0, s.length - 2) + ']';