• Bitte beachte, dass wir eine Serverliste sind!
    Wenn du ein Problem auf einem Server hast (z.B. Entbannantrag, etc), dann ist das Forum hier der falsche Ort.
  • Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

getJSON API Saubere aushabe.

Prasodym

Minecrafter
Registriert
3 Oktober 2018
Beiträge
10
Diamanten
303
Minecraft
Prasodym
Guten Abend miteinander,

Ich bin zur zeit auf der suche nache Einer lösung wie ich einer der werte auf eine Webseite sauber ausgeben kann.
Die JSON datei ist eine API von Minecraft-Server.eu https://minecraft-server.eu/api/v1/?object=servers&element=votes&key=5bb487146abc72x389203795bb48XXXXX Das ist dazu der Link für die API

Und jetzt meine Frage, Habt ihr eine Idee Ich zb.

API:
{ "name": "Matthias Testserver", "address": "31.214.224.113", "port": "3300", "month": "201810", "votes": [   {     "date": "October 1st, 2018 10:54 AM CEST",     "timestamp": 1538384065,     "nickname": "Matthias",     "steamid": "76561198028775552",     "claimed": "1"    }  ]}

Den Namen auf einer Webseite ausgeben bekomme?


Ich würde mir freuen über eure Hilfe.
Gruß Tobias
 
Zuletzt bearbeitet:

UnityGaming

Workaholic
Registriert
25 Oktober 2015
Beiträge
527
Alter
26
Diamanten
312
Minecraft
FastFelix771
Ich habe die API noch nie benutzt, aber ich kann mir vorstellen, dass es suboptimal ist deinen API Key hier zu teilen.

Zur Darstellung genügt eigentlich einfachstes HTML. Hol' dir die Daten und render sie in ein beliebiges DOM Element.
 

BloodSKreaper

Vorarbeiter
Registriert
12 Oktober 2014
Beiträge
249
Diamanten
316
Minecraft
BloodSKreaper
Guten Abend,

ich würde hier mit JavaScript arbeiten, aber das funktioniert nicht, da die API kein CORS anbietet. Das heißt, dass du über PHP oder Ähnliches arbeiten musst. JQuery wäre glaube ich auch noch eine Möglichkeit, aber da kenne ich mich nicht genug mit aus.
Hier kannst du Infos dazu finden, wie das geht.

Freundliche Grüße
BloodSKreaper
 

BloodSKreaper

Vorarbeiter
Registriert
12 Oktober 2014
Beiträge
249
Diamanten
316
Minecraft
BloodSKreaper
Guten Abend,

bei mir funktioniert der folgende Code Einwandfrei:
PHP:
<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
function get_data($url) {
    $ch = curl_init();
    $timeout = 5;
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}

$url = 'https://minecraft-server.eu/api/v1/?object=servers&element=votes&key=5bb487146abc72x389203795bb487156ac';
$content = get_data($url);
$obj = json_decode($content);
echo $obj->name;
?>

Freundliche Grüße
BloodSKreaper
 

BloodSKreaper

Vorarbeiter
Registriert
12 Oktober 2014
Beiträge
249
Diamanten
316
Minecraft
BloodSKreaper
Guten Tag,

ich verstehe die API Dokumentation so, dass jeder Vote einen eigenen Eintrag in dem Array "votes" erhält. Das heißt, dass du einmal die Gesamtanzahl der Votes zum jeweiligen Nickname erst ermitteln musst. Erst dann hast du diese Gesamtanzahl.
Da es sich bei dem votes Objekt um einen Array handelt musst du diesen auch als solchen behandeln.
Im folgenden Beispiel wird der Nickname aus dem ersten Vote aus dem Votes-Array ausgegeben.
PHP:
<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
function get_data($url) {
    $ch = curl_init();
    $timeout = 5;
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}

$url = 'https://minecraft-server.eu/api/v1/?object=servers&element=votes&key=5bb487146abc72x389203795bb487156ac';
$content = get_data($url);
$obj = json_decode($content);
$votes = $obj->votes;    #Votes Array
if(count($votes)>0){
    $vote = $votes[0];
    $nickname = $vote->nickname;
    echo $nickname;
}else{
    echo "Kein Vote gefunden!";
}
?>

Um die Anzahl der Votes pro Spieler zu erhalten bietet sich eine Schleife an, die einmal über alle Einträge im votes-Array geht.

Freundliche Grüße
BloodSKreaper
 

BloodSKreaper

Vorarbeiter
Registriert
12 Oktober 2014
Beiträge
249
Diamanten
316
Minecraft
BloodSKreaper
Beispiel-Lösung für das Problem, auch wenn das Design nicht so schön ist:
PHP:
<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
function get_data($url) {
    $ch = curl_init();
    $timeout = 5;
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}

$url = 'https://minecraft-server.eu/api/v1/?object=servers&element=votes&key=5bb487146abc72x389203795bb487156ac';
$content = get_data($url);
$obj = json_decode($content);
$votes = $obj->votes;    #Votes Array
if(count($votes)>0){
    $playervotes = array();
    foreach ($votes as $vote){
        $nickname = $vote->nickname;
        if(array_key_exists($nickname,$playervotes)){
            $playervotes[$nickname] += 1;
        }else{
            $playervotes[$nickname] = 1;
        }
    }
    foreach($playervotes as $nickname => $amount){
        echo "<img src=\"https://minotar.net/avatar/".$nickname."\" alt\"Dem ".$nickname." sei Gsicht\">".$nickname.": ".$amount." Votes </br>";

    }
}else{
    echo "Kein Vote gefunden!";
}
?>
 
Oben