Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   парсить Json (https://javascript.ru/forum/css-html/50511-parsit-json.html)

Ooops 29.09.2014 14:23

парсить Json
 
Здравствуйте.
мне дан url страницы:
http://109.202.0.226/adapter-web/rest/adapter-list

необходимо распарсить это все дело, используя js.

в интернете много примеров, но единственное, что у меня заработало:

<!DOCTYPE html>
<html>
<head>
<meta charset = "UTF-8"/>
</head>
<body>
<script type="text/javascript">
function hello(){	
var jsontext = '{"id":"atc-roiv-roiv","style":"async","name":"РОИВ-РОИВ Запрос","category":"Внутрирегиональные","supportsSubjectSignature":true}';
var contact = JSON.parse(jsontext);
document.write(contact.id + ", " + contact.style + ", " + contact.name + ", " + contact.category + ", " + contact.supportsSubjectSignature);
}
</script>
<hr>
<script type="text/javascript">
    hello();
</script>
</body>
</html>


Но дело в том, что это одна строка, которую я ввел вручную.
А как я понял нам даны 3 массива:
-forward
-reverse
-dynamic

Тоесть, я распарсил только одну строчку 1-ого массива.
Как мне распарсить все массивы?
Спасибо)

ksa 29.09.2014 14:30

Цитата:

Сообщение от Ooops
Как мне распарсить все массивы?

По аналогии...

Ooops 29.09.2014 14:36

Я как подумал, чтобы распарсить все, что есть нужно сначала распарсить массивы, а затем, то что в них, но ничего не вышло:
<!DOCTYPE html>
<html>
<head>
<meta charset = "UTF-8"/>
</head>
<body>
<script type="text/javascript">
function hello(){	
var jsontext = '"dynamic":[{"id":"f857ef0f-0954-45d1-90ca-8de92c4b086b","style":"async","name":"мойтест","category":"Внутрирегиональные","supportsSubjectSignature":false},{"id":"aca14187-5605-49ce-94e8-f70fa7046ac1","style":"async","name":"MyFirstTest","category":"Внутрирегиональные","supportsSubjectSignature":false},{"id":"2e98bb00-3358-452e-9064-b6338951188b","style":"async","name":"Сведения о детях","category":"Внутрирегиональные","supportsSubjectSignature":false},{"id":"ccd2c6b5-19de-4105-b774-2b81ffa260df","style":"async","name":"Тест 24","category":"Внутрирегиональные","supportsSubjectSignature":false},{"id":"31693600-5713-47bf-b297-77a370ff47bf","style":"async","name":"Test position fixed","category":"Внутрирегиональные","supportsSubjectSignature":false},{"id":"30774a9b-4753-4bc9-b3ba-1377b5660af7","style":"async","name":"тест 24/2","category":"Внутрирегиональные","supportsSubjectSignature":true},{"id":"deb9a67d-259e-429e-9e09-b1c337290c5b","style":"async","name":"Тест 24/3","category":"Внутрирегиональные","supportsSubjectSignature":true},{"id":"271f5d1d-dbf1-4773-9401-e1361b50fe33","style":"async","name":"Сведения о семье","category":"Внутрирегиональные","supportsSubjectSignature":false},{"id":"e2526078-85fa-4cf7-91cd-ac649e2a3b48","style":"async","name":"Тестирование тикетов 782 и 784","category":"Внутрирегиональные","supportsSubjectSignature":false},{"id":"0624ab77-7de3-4ab1-b6c6-5c1d1a56041d","style":"async","name":"Тестирование тикета ADP-785","category":"Внутрирегиональные","supportsSubjectSignature":false},{"id":"59365ded-469e-4440-97d5-e5bc6895ed3e","style":"async","name":"Запрос градостроительного плана","category":"Внутрирегиональные","supportsSubjectSignature":false},{"id":"17889682-d912-4396-8390-346099cf1fdd","style":"async","name":"MAIS Integration","category":"Внутрирегиональные","supportsSubjectSignature":false},{"id":"5a92ef8b-0c04-4c26-b2f9-145af0cbc90c","style":"async","name":"Тест от 23.07","category":"Внутрирегиональные","supportsSubjectSignature":false},{"id":"413cbed5-276d-4ac9-9d2c-bc26e8ccb8e7","style":"async","name":"Даша_тест","category":"Внутрирегиональные","supportsSubjectSignature":false},{"id":"a83944f7-a6b5-4189-9f73-222af1d02656","style":"async","name":"Тест","category":"Внутрирегиональные","supportsSubjectSignature":false}]}';


var contact = JSON.parse(jsontext);
var contact1 = JSON.parse(contact.dynamic);
document.write(contact1.id + ", " + contact1.style + ", " + contact1.name + ", " + contact1.category + ", " + contact1.supportsSubjectSignature);

</script>
<hr>
<script type="text/javascript">
    hello();
</script>
</body>
</html>

ksa 29.09.2014 14:39

Ooops, нужно правильно понимать, как работать с массивами и как с объектами...
Тогда и проблем не будет.

ksa 29.09.2014 14:40

Цитата:

Сообщение от Ooops
var jsontext = '"dynamic":

Это вообще не "начало" ни для объекта... Ни для массива...

Для понимания - сделай простенький тестовый пример. На нем можно будет продемонстрировать работу с массивами и объектами...

Ooops 29.09.2014 14:55

var json = '{"name":"Java","lastName":"Script"}';
var data = JSON.parse( json );
alert( data.name + data.lastName);

Ooops 29.09.2014 15:45

Цитата:

Сообщение от ksa (Сообщение 332660)
Это вообще не "начало" ни для объекта... Ни для массива...

Для понимания - сделай простенький тестовый пример. На нем можно будет продемонстрировать работу с массивами и объектами...

Получилось для одного массива!!! Уже что-то)
<!DOCTYPE html>
<html>
<head>
<meta charset = "UTF-8"/>
</head>
<body>
<script type="text/javascript">
function hello(){	
var jsontext = '{"dynamic":[{"id":"f857ef0f-0954-45d1-90ca-8de92c4b086b","style":"async","name":"мойтест","category":"Внутрирегиональные","supportsSubjectSignature":false},{"id":"aca14187-5605-49ce-94e8-f70fa7046ac1","style":"async","name":"MyFirstTest","category":"Внутрирегиональные","supportsSubjectSignature":false},{"id":"2e98bb00-3358-452e-9064-b6338951188b","style":"async","name":"Сведения о детях","category":"Внутрирегиональные","supportsSubjectSignature":false},{"id":"ccd2c6b5-19de-4105-b774-2b81ffa260df","style":"async","name":"Тест 24","category":"Внутрирегиональные","supportsSubjectSignature":false},{"id":"31693600-5713-47bf-b297-77a370ff47bf","style":"async","name":"Test position fixed","category":"Внутрирегиональные","supportsSubjectSignature":false},{"id":"30774a9b-4753-4bc9-b3ba-1377b5660af7","style":"async","name":"тест 24/2","category":"Внутрирегиональные","supportsSubjectSignature":true},{"id":"deb9a67d-259e-429e-9e09-b1c337290c5b","style":"async","name":"Тест 24/3","category":"Внутрирегиональные","supportsSubjectSignature":true},{"id":"271f5d1d-dbf1-4773-9401-e1361b50fe33","style":"async","name":"Сведения о семье","category":"Внутрирегиональные","supportsSubjectSignature":false},{"id":"e2526078-85fa-4cf7-91cd-ac649e2a3b48","style":"async","name":"Тестирование тикетов 782 и 784","category":"Внутрирегиональные","supportsSubjectSignature":false},{"id":"0624ab77-7de3-4ab1-b6c6-5c1d1a56041d","style":"async","name":"Тестирование тикета ADP-785","category":"Внутрирегиональные","supportsSubjectSignature":false},{"id":"59365ded-469e-4440-97d5-e5bc6895ed3e","style":"async","name":"Запрос градостроительного плана","category":"Внутрирегиональные","supportsSubjectSignature":false},{"id":"17889682-d912-4396-8390-346099cf1fdd","style":"async","name":"MAIS Integration","category":"Внутрирегиональные","supportsSubjectSignature":false},{"id":"5a92ef8b-0c04-4c26-b2f9-145af0cbc90c","style":"async","name":"Тест от 23.07","category":"Внутрирегиональные","supportsSubjectSignature":false},{"id":"413cbed5-276d-4ac9-9d2c-bc26e8ccb8e7","style":"async","name":"Даша_тест","category":"Внутрирегиональные","supportsSubjectSignature":false},{"id":"a83944f7-a6b5-4189-9f73-222af1d02656","style":"async","name":"Тест","category":"Внутрирегиональные","supportsSubjectSignature":false}]}';


var jsonData = JSON.parse(jsontext);
for (var i = 0; i < jsonData.dynamic.length; i++) {
    var counter = jsonData.dynamic[i];
    document.write(counter.id + ", " + counter.style + ", " + counter.name + ", " + counter.category + ", " + counter.supportsSubjectSignature);
}

}
</script>
<hr>
<script type="text/javascript">
    hello();
</script>
</body>
</html>

ksa 29.09.2014 16:04

Цитата:

Сообщение от Ooops
Получилось для одного массива

Оно и дальше не так сложно... ;)

for (var i = 0; i < jsonData.['dynamic'].length; i++) {...}

Идея понятна?

Или можно воспользоваться тем же
http://javascript.ru/for..in

Ooops 29.09.2014 16:07

Цитата:

Сообщение от ksa (Сообщение 332668)
Оно и дальше не так сложно... ;)

for (var i = 0; i < jsonData.['dynamic'].length; i++) {...}

Идея понятна?

Или можно воспользоваться тем же
http://javascript.ru/for..in

Так, ну я сделал вот так :
for (var j = 0; j < jsonData.forward.length; j++){
    var counter1 = jsonData.forward[j]
	 document.write(counter1.id + ", " + counter1.style + ", " + counter1.name + ", " + counter1.category + ", " + counter1.supportsSubjectSignature);
}
for (var f = 0; f < jsonData.reverse.length; f++){
    var counter2 = jsonData.reverse[f]
	 document.write(counter2.id + ", " + counter2.style + ", " + counter2.name + ", " + counter2.category + ", " + counter2.supportsSubjectSignature);
	 }
	 for (var i = 0; i < jsonData.dynamic.length; i++) {
    var counter = jsonData.dynamic[i];
    document.write(counter.id + ", " + counter.style + ", " + counter.name + ", " + counter.category + ", " + counter.supportsSubjectSignature);


Тоесть для каждого массива прогнал, думаю можно и сразу по всем по одному циклу?

Мне еще это все нужно распихать в таблицу созданной в HTML.
И считать не строкой вручную, а через url.
Подскажите что-нибудь?

ksa 29.09.2014 16:09

Цитата:

Сообщение от Ooops
Так, ну я сделал вот так

Одним циклом можно. for ... in


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