Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.05.2015, 20:13
Интересующийся
Отправить личное сообщение для dimke931 Посмотреть профиль Найти все сообщения от dimke931
 
Регистрация: 27.05.2015
Сообщений: 25

Помощь в преобразовании строки json
Всем добрый день, уже неделю не могу составить правильно скрипт, который преобразует json строку.
Вот исходная строка
Код:
[{"id":"1","name":"Киевский","surname":"Дмитрий","id_fat":"3","id_mot":"2"},
{"id":"2","name":"Ращупкина","surname":"Елизавета","id_fat":"7","id_mot":"0"},
{"id":"3","name":"Киевский","surname":"Владимир","id_fat":"6","id_mot":"5"},
{"id":"5","name":"","surname":"Галина","id_fat":"0","id_mot":"0"},
{"id":"6","name":"Киевский","surname":"Дмитрий","id_fat":"0","id_mot":"0"},
{"id":"7","name":"Ращупкин","surname":"Виталий","id_fat":"0","id_mot":"0"}];
Вот такую строку надо получить:
Код:
{
    "name": "Киевский Дмитрий",
    "parent": [{
        "name": "Киевский Владимир",
        "parent": [{
                "name": "Киевский Дмитрий "
            }, {
                "name": "Галина"
            }]
    },{
	 "name": "Ращупкина Елизавета",
	 "parent": [{
                "name": "Ращупкин Виталий"
            }]
	}]
}
В исходной строке id это итендификатор пользователя а id_fat и id_moth это итендификаторы отца и матери. Думаю, что нужно как то через рекурсию сделать, но я не силен в программировании... Буду рад любой помощи ^_^
Ответить с цитированием
  #2 (permalink)  
Старый 27.05.2015, 20:43
Интересующийся
Отправить личное сообщение для dimke931 Посмотреть профиль Найти все сообщения от dimke931
 
Регистрация: 27.05.2015
Сообщений: 25

Написал код, но он не так как надо работает...

$(document).ready(function(){
 var foo =[{"id":"1","name":"Киевский","surname":"Дмитрий","id_fat":"3","id_mot":"2"},{"id":"2","name":"Ращупкина","surname":"Елизавета","id_fat":"7","id_mot":"0"},{"id":"3","name":"Киевский","surname":"Владимир","id_fat":"6","id_mot":"5"},{"id":"4","name":"Третьяков","surname":"Антон","id_fat":"3","id_mot":"2"},{"id":"5","name":"","surname":"Галина","id_fat":"0","id_mot":"0"},{"id":"6","name":"Киевский","surname":"Дмитрий","id_fat":"0","id_mot":"0"},{"id":"7","name":"Ращупкин","surname":"Виталий","id_fat":"0","id_mot":"0"}];

 //console.log(foo[0].nom)
string = ""
	 for(i=0;i<foo.length;i++){
	 namef = '';
	 namem = '';
		 if(foo[i].id_fat != 0 || foo[i].id_mot != 0){
			 idf = foo[i].id_fat;
			 idm = foo[i].id_mot;
			 for(j=0;j<foo.length;j++){
				 if(foo[j].id == idf){
					namef = foo[j].name+' '+foo[j].surname
				 }
				 if(foo[j].id == idm){
					namem = foo[j].name+' '+foo[j].surname
					console.log(namem)
				 }
			 }
			 console.log(foo[i].id+' '+foo[i].name+' '+foo[i].surname+' '+namef+' '+namem)
			 string = string + '{"name":"'+foo[i].name+' '+foo[i].surname+'","children": [{"name": "'+namef+'"}, {"name": "'+namem+'"}],}'
		 }
	 }
console.log(string)
})
Ответить с цитированием
  #3 (permalink)  
Старый 27.05.2015, 21:33
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

вам такой результат нужен?
[{
     "name": "Киевский Дмитрий",
     "parent": [{
         "name": "Киевский Владимир"
     }, {
         "name": "Ращупкина Елизавета"
     }]
 }, {
     "name": "Ращупкина Елизавета",
     "parent": [{
         "name": "Ращупкин Виталий"
     }]
 }, {
     "name": "Киевский Владимир",
     "parent": [{
         "name": "Киевский Дмитрий"
     }, {
         "name": " Галина"
     }]
 }, {
     "name": "Третьяков Антон",
     "parent": [{
         "name": "Киевский Владимир"
     }, {
         "name": "Ращупкина Елизавета"
     }]
 }, {
     "name": " Галина",
     "parent": []
 }, {
     "name": "Киевский Дмитрий",
     "parent": []
 }, {
     "name": "Ращупкин Виталий",
     "parent": []
 }]
Ответить с цитированием
  #4 (permalink)  
Старый 28.05.2015, 06:59
Интересующийся
Отправить личное сообщение для dimke931 Посмотреть профиль Найти все сообщения от dimke931
 
Регистрация: 27.05.2015
Сообщений: 25

Нет, тут нужно родителей запихать внутрь.
{
    "name": "Киевский Дмитрий",
    "parent": [{
        "name": "Киевский Владимир",
        "parent": [{
                "name": "Киевский Дмитрий "
            }, {
                "name": "Галина"
            }]
    },{
	 "name": "Ращупкина Елизавета",
	 "parent": [{
                "name": "Ращупкин Виталий"
            }]
	}]
}

вот так... просто исходную строку я плучаю с помощью пхп скрипта, а преобразую ее в js.
Ответить с цитированием
  #5 (permalink)  
Старый 28.05.2015, 08:27
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от dimke931
просто исходную строку я плучаю с помощью пхп скрипта, а преобразую ее в js.
РНР отдал JSON, а "преобразую ее в js", это что такое? В JS ее используют как объект после JSON.parse(плучаю с помощью пхп). А уж если js-объект вернуть серверу и тоже как JSON, то JSON.stringify(js-объект).
Ответить с цитированием
  #6 (permalink)  
Старый 28.05.2015, 09:50
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

dimke931,
то есть вам нужно построить дерево
Ответить с цитированием
  #7 (permalink)  
Старый 28.05.2015, 11:19
Интересующийся
Отправить личное сообщение для dimke931 Посмотреть профиль Найти все сообщения от dimke931
 
Регистрация: 27.05.2015
Сообщений: 25

Сообщение от рони Посмотреть сообщение
dimke931,
то есть вам нужно построить дерево
Грубо говоря да
Ответить с цитированием
  #8 (permalink)  
Старый 28.05.2015, 11:20
Интересующийся
Отправить личное сообщение для dimke931 Посмотреть профиль Найти все сообщения от dimke931
 
Регистрация: 27.05.2015
Сообщений: 25

Сообщение от laimas Посмотреть сообщение
РНР отдал JSON, а "преобразую ее в js", это что такое? В JS ее используют как объект после JSON.parse(плучаю с помощью пхп). А уж если js-объект вернуть серверу и тоже как JSON, то JSON.stringify(js-объект).
Мне не нужно отдавать серверу полученную json строку, она нужна для того, что бы по ней отрисовать дерево
Ответить с цитированием
  #9 (permalink)  
Старый 28.05.2015, 12:02
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

Сообщение от dimke931
Мне не нужно отдавать серверу полученную json строку, она нужна для того, что бы по ней отрисовать дерево
Я это понял после то есть вам нужно построить дерево, но с чего это вдруг дерево этого массива будет таким как вы ожидаете? Оно будет близким к тому как рони показал, и его можно сразу и вернуть сервером, а для того чтобы отображалось деревом, поместить JSON строку в тег PRE, или иной выводящий как есть:
echo '<pre>';
$s = json_decode('[{"id":"1","name":"Киевский","surname":"Дмитрий","id_fat":"3","id_mot":"2"},
{"id":"2","name":"Ращупкина","surname":"Елизавета","id_fat":"7","id_mot":"0"},
{"id":"3","name":"Киевский","surname":"Владимир","id_fat":"6","id_mot":"5"},
{"id":"5","name":"","surname":"Галина","id_fat":"0","id_mot":"0"},
{"id":"6","name":"Киевский","surname":"Дмитрий","id_fat":"0","id_mot":"0"},
{"id":"7","name":"Ращупкин","surname":"Виталий","id_fat":"0","id_mot":"0"}]', 1);

echo json_encode($s, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT | JSON_NUMERIC_CHECK);

Параметр JSON_PRETTY_PRINT как раз и вернет форматируемый как есть.

Последний раз редактировалось laimas, 28.05.2015 в 12:15.
Ответить с цитированием
  #10 (permalink)  
Старый 28.05.2015, 12:16
Интересующийся
Отправить личное сообщение для dimke931 Посмотреть профиль Найти все сообщения от dimke931
 
Регистрация: 27.05.2015
Сообщений: 25

Сообщение от laimas
1
echo '<pre>';
2
$s = json_decode('[{"id":"1","name":"Киевский","surname":"Д итрий","id_fat":"3","id_mot":"2"},
3
{"id":"2","name":"Ращупкина","surname":" лизавета","id_fat":"7","id_mot":"0"},
4
{"id":"3","name":"Киевский","surname":"В адимир","id_fat":"6","id_mot":"5"},
5
{"id":"5","name":"","surname":"Галина","id_f at":"0","id_mot":"0"},
6
{"id":"6","name":"Киевский","surname":"Д итрий","id_fat":"0","id_mot":"0"},
7
{"id":"7","name":"Ращупкин","surname":"В талий","id_fat":"0","id_mot":"0"}]', 1);
8
 
9
echo json_encode($s, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT | JSON_NUMERIC_CHECK);
у меня это все есть, скрипт принимает на себя json строку, я не знаю как написать рекурсивную (как мне кажется) функцию что бы преобразовать эту строку в нужную
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу распарсить JSON. gorenie jQuery 3 29.11.2013 22:26
Помощь в реализации шифра вертикальной перестановки Dinobot Общие вопросы Javascript 1 01.12.2012 18:20
Проблемы с jqGrid и JSON massacra_panda Библиотеки/Тулкиты/Фреймворки 1 08.10.2012 16:44
JSON или JSONP для запросов на другой сервер? Метод GET, для длинных сообщений? Kotakota jQuery 5 23.08.2011 23:12
jQuery. Обработка ошибок и JSON. mma_mma jQuery 3 19.07.2010 12:10