Ich konvertiere InputStream mit folgendem Code in JSONObject. Meine Frage ist, gibt es eine einfache Möglichkeit, InputStream in JSONObject zu konvertieren. Ohne InputStream -> BufferedReader -> StringBuilder -> loop -> JSONObject.toString() zu tun.
InputStream inputStreamObject = PositionKeeperRequestTest.class.getResourceAsStream(jsonFileName);
BufferedReader streamReader = new BufferedReader(new InputStreamReader(inputStreamObject, "UTF-8"));
StringBuilder responseStrBuilder = new StringBuilder();
String inputStr;
while ((inputStr = streamReader.readLine()) != null)
responseStrBuilder.append(inputStr);
JSONObject jsonObject = new JSONObject(responseStrBuilder.toString());
Was du hast, ist in Ordnung. Sie könnten die extrahieren BufferedReader in eine statische Hilfsmethode lesen und diese wiederverwenden. Einige Bibliotheken von Drittanbietern tun dies bereits.
– Sotirios Delimanolis
17. März 2014 um 17:52 Uhr
Da Sie bereits die von Google verwenden Json-Simple Bibliothek können Sie den JSON aus einer analysieren InputStream so was:
InputStream inputStream = ... //Read from a file, or a HttpRequest, or whatever.
JSONParser jsonParser = new JSONParser();
JSONObject jsonObject = (JSONObject)jsonParser.parse(
new InputStreamReader(inputStream, "UTF-8"));
weiß nicht warum, aber dieser Code löst eine Ausnahme aus: Ausnahme im Thread “main” java.lang.ClassCastException: class org.json.simple.JSONArray can not be cast to class org.json.JSONObject (org.json.simple.JSONArray and org .json.JSONObject befinden sich im unbenannten Modul des Loaders ‘app’)
– Vinzi
25. Februar 2019 um 15:03 Uhr
Sollte das sein JsonParser Anstatt von JSONParser?
public class Test {
public static void main(String... strings) throws FileNotFoundException {
Reader reader = new FileReader(new File("<fullPath>/json.js"));
JsonElement elem = new JsonParser().parse(reader);
Gson gson = new GsonBuilder().create();
TestObject o = gson.fromJson(elem, TestObject.class);
System.out.println(o);
}
}
class TestObject{
public String fName;
public String lName;
public String toString() {
return fName +" "+lName;
}
}
Inhalt der json.js-Datei:
{"fName":"Mohamed",
"lName":"Ali"
}
Dies beantwortet die Frage nicht. Bitte geben Sie an, wie Gson das Problem behebt.
– Sotirios Delimanolis
17. März 2014 um 18:05 Uhr
Wenn die Bibliothek, die der Fragesteller bereits verwendet, eine Lösung bietet, versuchen Sie außerdem, diese Bibliothek mit dieser Lösung zu verwenden. Wenn dies nicht der Fall ist, drücken Sie aus, dass Sie keine Antwort geben, die im Grunde “Verwenden Sie eine andere Bibliothek” lautet, und posten Sie dann Links zu der Bibliothek. Antworten müssen die verknüpften Links erläutern und dürfen nicht nur Link-Dumps sein.
– null298
17. März 2014 um 18:21 Uhr
Murali
Das hat bei mir funktioniert:
JSONArray jsonarr = (JSONArray) new JSONParser().parse(new InputStreamReader(Nameofclass.class.getResourceAsStream(pathToJSONFile)));
JSONObject jsonobj = (JSONObject) new JSONParser().parse(new InputStreamReader(Nameofclass.class.getResourceAsStream(pathToJSONFile)));
Dies beantwortet die Frage nicht. Bitte geben Sie an, wie Gson das Problem behebt.
– Sotirios Delimanolis
17. März 2014 um 18:05 Uhr
Wenn die Bibliothek, die der Fragesteller bereits verwendet, eine Lösung bietet, versuchen Sie außerdem, diese Bibliothek mit dieser Lösung zu verwenden. Wenn dies nicht der Fall ist, drücken Sie aus, dass Sie keine Antwort geben, die im Grunde “Verwenden Sie eine andere Bibliothek” lautet, und posten Sie dann Links zu der Bibliothek. Antworten müssen die verknüpften Links erläutern und dürfen nicht nur Link-Dumps sein.
– null298
17. März 2014 um 18:21 Uhr
Surendra Kumar
Einfache Lösung:
JsonElement element = new JsonParser().parse(new InputStreamReader(inputStream));
JSONObject jsonObject = new JSONObject(element.getAsJsonObject().toString());
JsonParser ist nicht verfügbar
– Gabor
24. Mai 2018 um 19:36 Uhr
10186600cookie-checkKonvertieren Sie InputStream in JSONObjectyes
Was du hast, ist in Ordnung. Sie könnten die extrahieren
BufferedReader
in eine statische Hilfsmethode lesen und diese wiederverwenden. Einige Bibliotheken von Drittanbietern tun dies bereits.– Sotirios Delimanolis
17. März 2014 um 17:52 Uhr