ошибка json.parse
Подскажите, пожалуйста, как можно получить из json
{"objects":[["\"group\": \"0\"","\"index\": \"7\"","\"start\": \"Fri Jan 01 2016 00:00:00 GMT+0200 (Финляндия (зима))\"","\"end\": \"Fri Jan 01 2016 00:10:00 GMT+0200 (Финляндия (зима))\"","\"data-source\": \"visual/bg1.jpg\""],["\"group\": \"3\"","\"index\": \"8\"","\"start\": \"Fri Jan 01 2016 00:00:00 GMT+0200 (Финляндия (зима))\"","\"end\": \"Fri Jan 01 2016 00:10:00 GMT+0200 (Финляндия (зима))\"","\"data-source\": \"visual/symbols/symb1.png\"","\"data-fadeout\": \"null\"","\"data-scale\": \"null\"","\"data-ct_transitionx\": \"null\"","\"data-ct_transitiony\": \"null\"","\"data-ct_symbol_time\": \"2\""]]} значения group, index... для обоих массивов данных в json. Получение массива данных через var str = JSON.parse(ctdata.objects); дает вот такую ошибку "Uncaught SyntaxError: Unexpected token u in JSON at position 0" Подключены скрипты framework7 и tree.js. jQuery Не подключен. |
Ну так это описание не объекта, а непонятно чего. Правильный объект будет таким:
{"objects": [ { "group": 0, "index": 7, "start": "Fri Jan 01 2016 00:00:00 GMT+0200 (Финляндия (зима))", "end": "Fri Jan 01 2016 00:10:00 GMT+0200 (Финляндия (зима))", "data-source": "visual/bg1.jpg" }, { "group": 3, "index": 8, "start": "Fri Jan 01 2016 00:00:00 GMT+0200 (Финляндия (зима))", "end": "Fri Jan 01 2016 00:10:00 GMT+0200 (Финляндия (зима))", "data-source": "visual/symbols/symb1.png", "data-fadeout": null, "data-scale": null, "data-ct_transitionx": null, "data-ct_transitiony": null, "data-ct_symbol_time": 2 } ]}; а json представление таким: {"objects":[{"group":0,"index":7,"start":"Fri Jan 01 2016 00:00:00 GMT+0200 (Финляндия (зима))","end":"Fri Jan 01 2016 00:10:00 GMT+0200 (Финляндия (зима))","data-source":"visual/bg1.jpg"},{"group":3,"index":8,"start":"Fri Jan 01 2016 00:00:00 GMT+0200 (Финляндия (зима))","end":"Fri Jan 01 2016 00:10:00 GMT+0200 (Финляндия (зима))","data-source":"visual/symbols/symb1.png","data-fadeout":null,"data-scale":null,"data-ct_transitionx":null,"data-ct_transitiony":null,"data-ct_symbol_time":2}]} |
Цитата:
var mstr = '{"group": "0","index": "7"},{"group": "3","index": "8"}'; var ctdata = {"objects": [mstr]}; и получается с "" вначале {"objects":["{\"group\": \"0\",\"index\": \"7\"},{\"group\": \"3\",\"index\": \"8\"}"]} |
var mstr = [{group: "0",index: "7"},{group: "3",index: "8"}]; var ctdata = {objects: mstr}; var strJson = JSON.stringify(ctdata); alert(strJson); |
Цитата:
{"objects":"{{\"group\": \"0\",\"index\": \"7\"},{{\"group\": \"3\",\"index\": \"8\"}}"} Лишние скобки "" обрамляющие данные объекта приводят к ошибке парсинга этого json |
rustleofstars,
Цитата:
{"objects":[{"group": "0","index": "7"},{"group": "3","index": "8"}]} |
Цитата:
|
Решил проблему формирования корректного json таким образом:
// Массив с данными var object = []; $$(".ct_obj").each(function(){ object[c1] = []; object[c1][c2] = '"group": "'+group+'"'; c2++; object[c1][c2] = '"index": "'+index+'"'; c2++; c1++; c2 = 0; }); // Помещение данных из массива в json var mstr = ''; for(var ic = 0; ic < object.length; ic++){ mstr = mstr+'{'; for(var yc = 0; yc < object.length; yc++){ var nyc = yc+1; if (object[nyc]){ mstr = mstr+''+object[ic][yc]+','; }else{ mstr = mstr+''+object[ic][yc]+''; } } var nic = ic+1; if (object[nic]){ mstr = mstr+'},'; }else{ mstr = mstr+'}'; } } var ctdata = "{\"objects\":["; ctdata = ctdata+=mstr; ctdata = ctdata+= "]}"; } Получается валидный json. Но при преобразовании полученного json в строку var str = JSON.stringify(ctdata); При последующем парсинге этой строки обратно в значение var objects = JSON.parse(str.objects); Вылетает такая вот ошибка: VM22590:1 Uncaught SyntaxError: Unexpected token o in JSON at position 1 |
Часовой пояс GMT +3, время: 03:03. |