Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   проблема парсинга json с помощью jquery (https://javascript.ru/forum/jquery/20590-problema-parsinga-json-s-pomoshhyu-jquery.html)

frolvict 10.08.2011 16:40

проблема парсинга json с помощью jquery
 
У меня есть вот такой json

var p =
		    {
		    	"person" : {
		    		"Names" : {
		    					"Jane" :1,
		    					"Max" :0,
		    					"Julia" :1,
		    					"Anton" :0
		    					},
		    		"Snames" : {
		    					"King" :1,
		    					"Palmer" :0,
		    					"Eshton" :1,
		    					"Rits" :0
		    					},
		    	}
		    };


я хочу его спарсить
у меня есть список раскрывающийся

<ul>
	<li>Names</li>
	<li>Snames</li>
</ul>


я хочу сделать чтоб когда счелкаю на <li>Names</li> подгружались данные из json для Names. Сейчас у меня вот такой вот код, но он не работает ((

$("ul li").live('click', function(){
	
		var txt = $(this).text();
		
		console.log(p.person.txt);
		
	});


пишет что "undefined" ((

Подскажите плизз как решить проблемку!

ваый 10.08.2011 16:44

Цитата:

Сообщение от frolvict
пишет что "undefined" ((

Удивительно!

var p = {
                "person" : {
                    *!*txt: 'test',*/!*
                    "Names" : {
                                "Jane" :1,
                                "Max" :0,
                                "Julia" :1,
                                "Anton" :0
                                },
                    
            };
И это не json.

kobezzza 10.08.2011 16:45

http://jsonlint.com/

frolvict 10.08.2011 16:47

Цитата:

Сообщение от kobezzza (Сообщение 119545)

Спасибо за ссылку но это не решает проблему, я просто не весь свой json скопировал поэтому и запятая там лишняя была, но за ссылку спасибо

frolvict 10.08.2011 16:52

Цитата:

Сообщение от ваый (Сообщение 119544)
И это не json.

Самый настоящий json :) что же это еще может быть? ))

Проверку на валидность уж точно прошел ;)

{
    "person": {
        "Names": {
            "Jane": 1,
            "Max": 0,
            "Julia": 1,
            "Anton": 0
        },
        "Snames": {
            "King": 1,
            "Palmer": 0,
            "Eshton": 1,
            "Rits": 0
        }
    }
}

ваый 10.08.2011 16:56

Цитата:

Сообщение от frolvict
что же это еще может быть? ))

JSON - это строка, а у вас это обычный объект. И, конечно, если в person нету подэлемента txt то будет undefined.

frolvict 10.08.2011 17:00

а как можно сделать чтоб не было этого undefined и чтоб я все таки мог через список li подгружать данные?

ваый 10.08.2011 17:08

p.person[txt]

frolvict 10.08.2011 17:40

Большое спасибо!
Заработало ;)

Magneto 10.08.2011 18:18

Цитата:

Сообщение от ваый (Сообщение 119554)
JSON - это строка

Это что шутка?

http://ru.wikipedia.org/wiki/JSON

ваый 10.08.2011 18:36

Цитата:

Сообщение от Magneto
Это что шутка?

:) Конечно, нет.
В моем понимании, говорить о JSON имеет смысл в контексте обмена данными. Вне этого контекста JSON'а нету, а есть объекты, примеры которых мы и наблюдаем выше.

frolvict 10.08.2011 23:54

var p = {
    "person": {
        "Names": {
            "Jane": {
            		"Age" : 1,
            		"Height" : 1
            		},
            "Max": {
            		"Age" : 1,
            		"Height" : 1
            		},
            "Julia": 1,
            "Anton": 0
        },
        "Snames": {
            "King": 1,
            "Palmer": 0,
            "Eshton": 1,
            "Rits": 0
        }
    }
}


подскажите плизз еще как вывести Jane Age? можно вывести напрямую p.person.Names.Jane а мне нужно через переменную опять вывести p.person и плюс переменная к примеру data в которой и будут Names.Jane

Заранее спасибо за помощь!

ваый 11.08.2011 00:01

квадратные скобки, как в предыдущем случае

frolvict 11.08.2011 00:21

да спасиб ;) туго доходит до меня ))

Kolyaj 12.08.2011 11:32

Цитата:

Сообщение от ваый
JSON - это строка

Цитата:

Сообщение от Magneto
Это что шутка?

Строго говоря, JSON -- это способ кодирования объектов в строку. Можно сказать, что JSON -- строковое представление объекта, т.е. всё-таки строка.

Андрей38 16.09.2011 22:35

Внимательно прочитал , повторил и возник вопрос_ как добывать паренты и чилдрены из Джейсона типа
var parent=p.find(Eshton).parent()
alert(parent(text)// должен вывести person)?
исходник предыдущего поста
var p = {

"person": {
"Names": {
"Jane": 1,
"Max": 0,
"Julia": 1,
"Anton": 0
},
"Snames": {
"King": 1,
"Palmer": 0,
"Eshton":341,
"Rits": 0
}
}
}

А еще_по индексу можна искать типа
var ind=Snames.index()
alert(ind)
//
а такое_
var kazdiy= person(':nth(2)').val()
alert(kazdiy)

,а САМОЕ главное_ вывести НАЗВАНИЯ заголовков"Names" , "Jane" и тд и как оно называеться

есть ли такие же аналоги как в Квери по поиску в доме,но только для контента Джейсона ?

Я проверял XML _ ОТЛИЧНО все работает !Даже фильтры индексов!!! А Джейсон то,Джейсон как заставить работать аналогично ?
Вот xml
<script type="text/javascript">

$(document).ready(function(){ // по завершению загрузки страницы
$('#example-3').click(function(){
// alert('rttyy')


// вешаем на клик по элементу с id = example-3
$.post('example.xml', {}, function(xml){ // загрузку XML из файла example.xml

$(xml).find('note').each(function(){ // заполняем DOM элемент данными из XML
$('#example-3').append('To: ' + $(this).find('*:nth(4)').text() + '<br/>')

});
}, 'xml'); // указываем явно тип данных
})
});
</script>

<div id='example-3' >fff</div>
файл____

<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

</body>


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