парсить 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-ого массива. Как мне распарсить все массивы? Спасибо) |
Цитата:
|
Я как подумал, чтобы распарсить все, что есть нужно сначала распарсить массивы, а затем, то что в них, но ничего не вышло:
<!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> |
Ooops, нужно правильно понимать, как работать с массивами и как с объектами...
Тогда и проблем не будет. |
Цитата:
Для понимания - сделай простенький тестовый пример. На нем можно будет продемонстрировать работу с массивами и объектами... |
var json = '{"name":"Java","lastName":"Script"}';
var data = JSON.parse( json ); alert( data.name + data.lastName); |
Цитата:
<!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> |
Цитата:
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. Подскажите что-нибудь? |
Цитата:
|
Цитата:
|
Цитата:
Нужно,чтобы подключалось от http://109.202.0.226/adapter-web/rest/adapter-list; Это не главная проблема, я не могу понять как мне имея скрипт, распихать его содержимое по таблице; Тоесть у нас с массива(пусть будет forward) есть очень много элементов: id,style,name,category,supportsSubjectSignature со своими значениями id[1],id[2],id[3], и тд. Как я понял, мне нужно вывести название 1-ого массива,затем таблицу, со всеми его значениями: FORWARD |id|style|name|category|supportsSubjectSignature| ___________________________________________ |_ |____|_____|_______|_____________________| |_ |____|_____|_______|_____________________| и т.д. Как это сделать? |
Цитата:
Но, как считать json,зная ссылку на него? function addRow (tableID){ var jsontext = "тут файл json"; var jsonData = JSON.parse(jsontext); for (var j = 0; j <165;j++) { var counter1 = jsonData.forward[j]; var tbl = document.getElementById (tableID); var ro = tbl.insertRow (-1); var ce = ro.insertCell (-1); ce.innerHTML = counter1.id; var ce1 = ro.insertCell (-1); ce1.innerHTML = counter1.style; var ce2 = ro.insertCell(-1); ce2.innerHTML = counter1.name; var ce3 = ro.insertCell(-1); ce3.innerHTML = counter1.category; var ce4 = ro.insertCell(-1); ce4.innerHTML = counter1.supportsSubjectSignature; } } <table id="mytab" border cellpadding="5"> <tr><td>id</td><td>style</td><td>name</td><td>category</td><td>supportsSubjectSignature</td></tr> </table> <hr> <p><input type="button" value="Add Row" onclick="addRow ('mytab')"> |
Цитата:
http://jquery-docs.ru/Ajax/jQuery.getJSON/ |
Цитата:
|
Часовой пояс GMT +3, время: 22:10. |