Json von URL Lesen (mit Gson Library)

Waterfront

Mitglied
Jap ich bins wieder und wieder fast der gleiche Titel 😀

Ähm ja schaut euch das mal an, mein Eclispe wirft kein Problem oder sonst was aber
theoretisch müsste

(Library)

{"waterfront":{"id":44787412,"name":"Waterfront","profileIconId":593,"summonerLevel":30,"revisionDate":1405189388000}}

In der Console stehen. Stattdessen steht sowas drin
{serializeNulls:falsefactories:[Factory[typeHierarchy=com.google.gson.JsonElement,adapter=com.google.gson.internal.bind.TypeAdapters$25@47c62251], com.google.gson.internal.bind.ObjectTypeAdapter$1@3e6fa38a, com.google.gson.internal.Excluder@66a3ffec, Factory[type=java.lang.String,adapter=com.google.gson.internal.bind.TypeAdapters$13@77caeb3e], Factory[type=java.lang.Integer+int,adapter=com.google.gson.internal.bind.TypeAdapters$7@1e88b3c], Factory[type=java.lang.Boolean+boolean,adapter=com.google.gson.internal.bind.TypeAdapters$3@42d80b78], Factory[type=java.lang.Byte+byte,adapter=com.google.gson.internal.bind.TypeAdapters$5@3bfdc050], Factory[type=java.lang.Short+short,adapter=com.google.gson.internal.bind.TypeAdapters$6@1bce4f0a], Factory[type=java.lang.Long+long,adapter=com.google.gson.internal.bind.TypeAdapters$8@5e3a8624], Factory[type=java.lang.Double+double,adapter=com.google.gson.Gson$3@5c3bd550], Factory[type=java.lang.Float+float,adapter=com.google.gson.Gson$4@91161c7], Factory[type=java.lang.Number,adapter=com.google.gson.internal.bind.TypeAdapters$11@604ed9f0], Factory[type=java.lang.Character+char,adapter=com.google.gson.internal.bind.TypeAdapters$12@6a4f787b], Factory[type=java.lang.StringBuilder,adapter=com.google.gson.internal.bind.TypeAdapters$16@685cb137], Factory[type=java.lang.StringBuffer,adapter=com.google.gson.internal.bind.TypeAdapters$17@6a41eaa2], Factory[type=java.math.BigDecimal,adapter=com.google.gson.internal.bind.TypeAdapters$14@7cd62f43], Factory[type=java.math.BigInteger,adapter=com.google.gson.internal.bind.TypeAdapters$15@6d4b1c02], Factory[type=java.net.URL,adapter=com.google.gson.internal.bind.TypeAdapters$18@6093dd95], Factory[type=java.net.URI,adapter=com.google.gson.internal.bind.TypeAdapters$19@5622fdf], Factory[type=java.util.UUID,adapter=com.google.gson.internal.bind.TypeAdapters$21@4883b407], Factory[type=java.util.Locale,adapter=com.google.gson.internal.bind.TypeAdapters$24@7d9d1a19], Factory[typeHierarchy=java.net.InetAddress,adapter=com.google.gson.internal.bind.TypeAdapters$20@39c0f4a], Factory[type=java.util.BitSet,adapter=com.google.gson.internal.bind.TypeAdapters$2@1794d431], com.google.gson.internal.bind.DateTypeAdapter$1@42e26948, Factory[type=java.util.Calendar+java.util.GregorianCalendar,adapter=com.google.gson.internal.bind.TypeAdapters$23@57baeedf], com.google.gson.internal.bind.TimeTypeAdapter$1@343f4d3d, com.google.gson.internal.bind.SqlDateTypeAdapter$1@53b32d7, com.google.gson.internal.bind.TypeAdapters$22@5442a311, com.google.gson.internal.bind.ArrayTypeAdapter$1@548e7350, com.google.gson.internal.bind.TypeAdapters$26@1a968a59, Factory[type=java.lang.Class,adapter=com.google.gson.internal.bind.TypeAdapters$1@4667ae56], com.google.gson.internal.bind.CollectionTypeAdapterFactory@77cd7a0, com.google.gson.internal.bind.MapTypeAdapterFactory@204f30ec, com.google.gson.internal.bind.ReflectiveTypeAdapterFactory@e25b2fe],instanceCreators:{}}

Keine Ahnung was das bedeutet ???:L

Hier mein Code
Java:
package gson;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.URL;
import java.nio.charset.Charset;
import com.google.gson.*;

public class Gsonfromurl {

	
	public static void main(String[] args) throws IOException {
		Gson waterfront = readJsonFromUrl("https://euw.api.pvp.net/api/lol/euw/v1.4/summoner/by-name/Waterfront?api_key=8e4d032a-2f58-46fd-b916-287594c69f2b");
		System.out.println(waterfront.toString());
		
	}
	
	private static String readAll(Reader rd) throws IOException {
		StringBuilder sb = new StringBuilder();
		int cp;
		while ((cp = rd.read()) != -1) {
			sb.append((char) cp);
		}
		return sb.toString();
	}

	public static Gson readJsonFromUrl(String url) throws IOException {
		java.io.InputStream is = new URL(url).openStream();
		try {
			BufferedReader rd = new BufferedReader(new InputStreamReader(is,
					Charset.forName("UTF-8")));
			String jsonText = readAll(rd);
			Gson json = new Gson();
			json.toJson(jsonText);
			return json;
		} finally {
			is.close();
		}
	}
	
	
}

LG
Water
 
Ich vermute, da sind gleich mehrere Fehler:

[JAVA=36]
json.toJson(jsonText);
[/code]

Der Rückgabewert scheint dich nicht zu interessieren - wenn du mich frägst, willst du eigentlich genau den haben und auf die Konsole schreiben.

[JAVA=16]
System.out.println(waterfront.toString());
[/code]

Hier schreibst du ein Java-Objekt, das toString() nicht redefiniert auf die Konsole. Das Objekt weiß nichts von den Daten, die du vorher versuchst hast zu lesen. Außerdem ist toString hier anscheinend sowas von falsch!!
 
Ich vermute, da sind gleich mehrere Fehler:

[JAVA=36]
json.toJson(jsonText);
[/code]

Der Rückgabewert scheint dich nicht zu interessieren - wenn du mich frägst, willst du eigentlich genau den haben und auf die Konsole schreiben.

Ähm ich verstehe nicht was du meinst ?! :bahnhof:

[JAVA=16]
System.out.println(waterfront.toString());
[/code]

Hier schreibst du ein Java-Objekt, das toString() nicht redefiniert auf die Konsole. Das Objekt weiß nichts von den Daten, die du vorher versuchst hast zu lesen. Außerdem ist toString hier anscheinend sowas von falsch!!
Aber es werden doch keine Fehler seitens Eclipse ausgespuckt, wobei ich doch mit toString() das Objekt in ein String umwandel !?
 
Also, ich habe zwar keinen blassen Schimmer von JSON's, aber
ich möchte dir gerne noch etwas über URL's sagen:
URL's sind ziemlich empfindlich und stellen deshalb auch eine gewisse Fehlerquelle dar;

Am sichersten lädt man einen URL darum so:
Java:
URL url = ResourceLoader.class.getResource( "/Pfad/Dateiname.Dateiendung" );
Sofern du einen Stream brauchst, so kannst du diesen auch direkt so erzeugen:
Java:
InputStream stream_in = ResourceLoader.class.getResourceAsStream( "/Pfad/Dateiname.Dateiendung" );

Letzteres kannst du auch gleich in deine "readJsonFromUrl"-Methode einfügen!
 
Zuletzt bearbeitet:

Zurück
Oben