Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   перевод из JSON даты (https://javascript.ru/forum/jquery/57042-perevod-iz-json-daty.html)

corsik 16.07.2015 16:58

перевод из JSON даты
 
есть JSON
[
{
"Title": "Титул",
"URL": "http://javascript.ru/",
"Date": "2015/07/07"
},
{
"Title": "Титул",
"URL": "http://javascript.ru/",
"Date": "2015/07/08"
},
{
"Title": "Титул",
"URL": "http://javascript.ru/",
"Date": "2015/07/08"
}
]


необходимо его перевести в формат

var events = [
        { Title: "", URL: "http://javascript.ru/", Date: new Date("07/07/2015") },
        { Title: "", URL: "http://javascript.ru/", Date: new Date("10/07/2015") },
        { Title: "", URL: "http://javascript.ru/", Date: new Date("12/07/2015") },
    ];


пробую

var event = $.getJSON('../include/events.json', function(data){
	  var items = [];
 
		var events = JSON.parse(data, function(key, value) {
		  if (value == 'Date'){
			return items.push(new Date(value));  
		  } 
		  return  items.push(value);
		});
		
	});


Что не так, как сделать правильно?

Decode 16.07.2015 17:47

var json = '[ \
      { \
        "Title": "Титул", \
        "URL": "http://javascript.ru/", \
        "Date": "2015/07/07" \
      },  \
      {  \
        "Title": "Титул", \
        "URL": "http://javascript.ru/", \
        "Date": "2015/07/08" \
        }, \
      { \
        "Title": "Титул", \
        "URL": "http://javascript.ru/", \
        "Date": "2015/07/08" \
        } \
    ]';


    json = JSON.parse(json, function(key, value) {
      return (key == 'Date' ? new Date(value) : value);
    });

    console.dir( json );

corsik 16.07.2015 17:55

Цитата:

Сообщение от Decode (Сообщение 380029)
json = JSON.parse(json, function(key, value) {
      return (key == 'Date' ? new Date(value) : value);
    });

    console.dir( json );

Только необходимо от из файла передать в переменную.

Decode 16.07.2015 18:15

corsik,

var data;

var xhr = new XMLHttpRequest();
xhr.open('GET', '../include/events.json', true);

xhr.onreadystatechange = function() {
    if (xhr.readyState == 4 && xhr.status == 200) {
        try {
            data = JSON.parse(xhr.responseText, function(key, value) {
                return (key == 'Date' ? new Date(value) : value);
            });
        } catch(e) {
            console.log(e.name);
        }

    }
};

corsik 16.07.2015 21:09

не катит undefined , я уже пробовал из функции записать данные во внешнюю переменную

Decode 16.07.2015 23:52

corsik, xhr.responseText выведте в консоли, что там будет?

P.S. И не забудте добавить в конец xhr.send(). А то я зыбыл.

corsik 17.07.2015 08:19

Цитата:

Сообщение от Decode (Сообщение 380077)
corsik, xhr.responseText выведте в консоли, что там будет?

P.S. И не забудте добавить в конец xhr.send(). А то я зыбыл.

выводит полностью массив с объектами внутри

Decode 17.07.2015 16:20

corsik, ну значит все работает. Undefined было по тому что я забыл дописать xhr.send().


Часовой пояс GMT +3, время: 07:59.