Как извлечь JSON из URL? - PullRequest
       3

Как извлечь JSON из URL?

3 голосов
/ 22 июня 2011

Я хочу извлечь данные JSON из URL-адреса сервера, который выглядит примерно так:

https://dev.randomdomain.com/subdomain

Сам URL выводит данные примерно так:

[ 
  { "name": "Not configured", 
    "mac_address": "####c##c####", 
    "online": "false", 
    "rate": "Not configured"},

  { "name": "Not configured", 
    "mac_address": "####c##c####", 
   "online": "false", 
   "rate": "Not configured"},
]

Исходные данные изменяются, и их необходимо будет соответствующим образом обновить. Мне интересно, каков наилучший способ извлечь данные JSON из URL-адреса и поддерживать их в актуальном состоянии? Я посмотрел на функцию jQuery getJSON, и я не уверен, что она будет работать, поскольку URL просто выводит JSON, это не файл .json.

Можно ли сделать то, что я описал, используя JavaScript, jQuery или любую другую открытую методологию?

Спасибо.

Ответы [ 6 ]

1 голос
/ 03 сентября 2011
$,getJSON('url',function(data){
     alert(data);
    // or alert("sample text"); would do if the json file is handled well enough.
    // if no alert is shown, it's either you're using chrome with an offline version of 
    // your project or you're having an invalid json file
});

Могу я спросить, какой браузер вы используете? $.getJSON не будет работать в Chrome, если вы делаете это в автономном режиме.

Я также разочарован тем, что файл json не обрабатывается, даже если я не использую Chrome - например, Я использую FF или IE.

Я обнаружил, что вы не должны помещать комментарии в файл json, так как он делает его недействительным. Я думаю, это потому, что .getJSON действительно анализирует данные внутри файла JSON как текст, а не как файл javascript, поэтому он также будет проходить через комментарий (если он у вас есть) и наверняка не поймет его, поэтому я предлагаем вам удалить блок комментариев внутри ваших файлов json.

0 голосов
/ 22 июня 2011

Доверяете ли вы источнику строки JSON.Если вы это сделаете, просто используйте

alert(eval(dropStringHere));

Метод getJSON jQuery также должен работать нормально.

0 голосов
/ 22 июня 2011

Функция $. GetJSON () предназначена для помещения строки в формате JSON в объект javascript. Поэтому, если вы хотите получить данные, вы можете попробовать:

$.getJSON("https://dev.randomdomain.com/subdomain",function(data){
   alert(data[0].name);
});
0 голосов
/ 22 июня 2011

Из вашего вопроса не очень понятно, хотите ли вы обрабатывать данные на стороне клиента (в браузере и т. Д.) Или на стороне сервера для автономной обработки.

Для доступа и обработки этих данных на стороне сервера вы можете использовать curl / libcurl, чтобы извлекать данные и декодировать их в объект на языке по вашему выбору. Например в php:

<?php 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "https://dev.randomdomain.com/subdomain");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);

data_as_php_object = json_decode($output);
?>
0 голосов
/ 22 июня 2011

Во-первых, вы на самом деле пытаетесь проанализировать JSON из ответа.URL - это то, от чего вы запрашиваете ответ.Вот простой пример использования getJSON:

$.getJSON('https://dev.randomdomain.com/subdomain', function(data) {
    var output = "";
    $.each(data, function(index, node) {
        output += node.name + ": " + node.mac_address + "<br/>";
    });
    document.write(output);
});

http://jsfiddle.net/YwPzW/1/

0 голосов
/ 22 июня 2011

Вы даже пытались использовать $.getJSON()?Он делает именно то, что вам нужно, он просто читает ответ с сервера и возвращает объект json.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...