Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.12.2016, 20:01
Интересующийся
Отправить личное сообщение для rustleofstars Посмотреть профиль Найти все сообщения от rustleofstars
 
Регистрация: 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 Не подключен.
Ответить с цитированием
  #2 (permalink)  
Старый 16.12.2016, 06:52
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 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}]}
Ответить с цитированием
  #3 (permalink)  
Старый 16.12.2016, 14:56
Интересующийся
Отправить личное сообщение для rustleofstars Посмотреть профиль Найти все сообщения от rustleofstars
 
Регистрация: 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\"}"]}
Ответить с цитированием
  #4 (permalink)  
Старый 16.12.2016, 15:26
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 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);
Ответить с цитированием
  #5 (permalink)  
Старый 16.12.2016, 15:35
Интересующийся
Отправить личное сообщение для rustleofstars Посмотреть профиль Найти все сообщения от rustleofstars
 
Регистрация: 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
Ответить с цитированием
  #6 (permalink)  
Старый 16.12.2016, 15:51
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 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"}]}
Ответить с цитированием
  #7 (permalink)  
Старый 16.12.2016, 16:40
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от rustleofstars
var mstr = '{"group": "0","index": "7"},{"group": "3","index": "8"}';
Это строка, не объект, отсюда и лишние экранированные кавычки.
Ответить с цитированием
  #8 (permalink)  
Старый 16.12.2016, 20:46
Интересующийся
Отправить личное сообщение для rustleofstars Посмотреть профиль Найти все сообщения от rustleofstars
 
Регистрация: 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
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка 500 при обращении через аякс imedia AJAX и COMET 1 04.07.2015 14:08
ошибка JSON.parse NickFrol9 AJAX и COMET 3 18.02.2015 08:44
firebug пишет ошибка invalid range in character class Dim@ Общие вопросы Javascript 5 10.05.2012 16:52
То-ли лыжи не едут, толи... возможно ошибка в коде. AzriMan Общие вопросы Javascript 19 18.05.2009 16:07
IE: неизвестная ошибка выполнения _Kpot_ Internet Explorer 1 03.04.2008 11:00