29.09.2014, 14:23
|
Новичок на форуме
|
|
Регистрация: 29.09.2014
Сообщений: 7
|
|
парсить 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-ого массива.
Как мне распарсить все массивы?
Спасибо)
|
|
29.09.2014, 14:30
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,217
|
|
Сообщение от Ooops
|
Как мне распарсить все массивы?
|
По аналогии...
|
|
29.09.2014, 14:36
|
Новичок на форуме
|
|
Регистрация: 29.09.2014
Сообщений: 7
|
|
Я как подумал, чтобы распарсить все, что есть нужно сначала распарсить массивы, а затем, то что в них, но ничего не вышло:
<!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>
|
|
29.09.2014, 14:39
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,217
|
|
Ooops, нужно правильно понимать, как работать с массивами и как с объектами...
Тогда и проблем не будет.
|
|
29.09.2014, 14:40
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,217
|
|
Сообщение от Ooops
|
var jsontext = '"dynamic":
|
Это вообще не "начало" ни для объекта... Ни для массива...
Для понимания - сделай простенький тестовый пример. На нем можно будет продемонстрировать работу с массивами и объектами...
|
|
29.09.2014, 14:55
|
Новичок на форуме
|
|
Регистрация: 29.09.2014
Сообщений: 7
|
|
var json = '{"name":"Java","lastName":"Script"}';
var data = JSON.parse( json );
alert( data.name + data.lastName);
|
|
29.09.2014, 15:45
|
Новичок на форуме
|
|
Регистрация: 29.09.2014
Сообщений: 7
|
|
Сообщение от ksa
|
Это вообще не "начало" ни для объекта... Ни для массива...
Для понимания - сделай простенький тестовый пример. На нем можно будет продемонстрировать работу с массивами и объектами...
|
Получилось для одного массива!!! Уже что-то)
<!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>
|
|
29.09.2014, 16:04
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,217
|
|
Сообщение от Ooops
|
Получилось для одного массива
|
Оно и дальше не так сложно...
for (var i = 0; i < jsonData.['dynamic'].length; i++) {...}
Идея понятна?
Или можно воспользоваться тем же
http://javascript.ru/for..in
|
|
29.09.2014, 16:07
|
Новичок на форуме
|
|
Регистрация: 29.09.2014
Сообщений: 7
|
|
Сообщение от ksa
|
Оно и дальше не так сложно...
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.
Подскажите что-нибудь?
|
|
29.09.2014, 16:09
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,217
|
|
Сообщение от Ooops
|
Так, ну я сделал вот так
|
Одним циклом можно. for ... in
|
|
|
|