# Json von URL Lesen (mit Gson Library)



## Waterfront (12. Jul 2014)

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 



Spoiler






> {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 



Spoiler





```
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


----------



## fischefr (13. Jul 2014)

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!!


----------



## Waterfront (14. Jul 2014)

fischefr hat gesagt.:


> Ich vermute, da sind gleich mehrere Fehler:
> 
> [JAVA=36]
> json.toJson(jsonText);
> ...



Ä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 !?


----------



## Androbin (19. Jul 2014)

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:

```
URL url = ResourceLoader.class.getResource( "/Pfad/Dateiname.Dateiendung" );
```
Sofern du einen Stream brauchst, so kannst du diesen auch direkt so erzeugen:

```
InputStream stream_in = ResourceLoader.class.getResourceAsStream( "/Pfad/Dateiname.Dateiendung" );
```

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


----------

