15.12.2016, 20:01
|
Интересующийся
|
|
Регистрация: 30.03.2012
Сообщений: 24
|
|
ошибка 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 Не подключен.
|
|
16.12.2016, 06:52
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Ну так это описание не объекта, а непонятно чего. Правильный объект будет таким:
{"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}]}
|
|
16.12.2016, 14:56
|
Интересующийся
|
|
Регистрация: 30.03.2012
Сообщений: 24
|
|
Сообщение от laimas
|
Ну так это описание не объекта, а непонятно чего. Правильный объект будет таким:
{"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}]}
|
Спасибо. Подскажите еще, пожалуйста, правильный синтаксис заполнения объекта в json через переменную. Сейчас вот так пытаюсь сделать
var mstr = '{"group": "0","index": "7"},{"group": "3","index": "8"}';
var ctdata = {"objects": [mstr]};
и получается с "" вначале
{"objects":["{\"group\": \"0\",\"index\": \"7\"},{\"group\": \"3\",\"index\": \"8\"}"]}
|
|
16.12.2016, 15:26
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
var mstr = [{group: "0",index: "7"},{group: "3",index: "8"}];
var ctdata = {objects: mstr};
var strJson = JSON.stringify(ctdata);
alert(strJson);
|
|
16.12.2016, 15:35
|
Интересующийся
|
|
Регистрация: 30.03.2012
Сообщений: 24
|
|
Сообщение от Dilettante_Pro
|
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
|
|
16.12.2016, 15:51
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
rustleofstars,
Сообщение от rustleofstars
|
Вот так получается
{"objects":"{{\"group\": \"0\",\"index\": \"7\"},{{\"group\": \"3\",\"index\": \"8\"}}"}
|
вообще-то в моем примере вот так получается - запустите, посмотрите:
{"objects":[{"group": "0","index": "7"},{"group": "3","index": "8"}]}
|
|
16.12.2016, 16:40
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от rustleofstars
|
var mstr = '{"group": "0","index": "7"},{"group": "3","index": "8"}';
|
Это строка, не объект, отсюда и лишние экранированные кавычки.
|
|
16.12.2016, 20:46
|
Интересующийся
|
|
Регистрация: 30.03.2012
Сообщений: 24
|
|
Решил проблему формирования корректного 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
|
|
|
|