Estoy convirtiendo InputStream a JSONObject usando el siguiente código. Mi pregunta es, ¿hay alguna forma sencilla de convertir InputStream a JSONObject? Sin hacer InputStream -> BufferedReader -> StringBuilder -> loop -> JSONObject.toString().
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());
Lo que tienes está bien. Podrías extraer el BufferedReader leer a un método auxiliar estático y reutilizarlo. Algunas bibliotecas de terceros ya lo hacen.
– Sotirios Delimanolis
17/03/2014 a las 17:52
Como ya estás usando Google’s Json-Simple biblioteca, puede analizar el json desde un InputStream como esto:
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"));
no sé por qué, pero este código arroja una excepción: excepción en el subproceso “principal” java.lang.ClassCastException: la clase org.json.simple.JSONArray no se puede convertir a la clase org.json.JSONObject (org.json.simple.JSONArray y org .json.JSONObject están en el módulo sin nombre del cargador ‘aplicación’)
– Vinci
25 de febrero de 2019 a las 15:03
¿Debería ser esto? JsonParser en vez de 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;
}
}
Contenido del archivo json.js:
{"fName":"Mohamed",
"lName":"Ali"
}
Esto no responde la pregunta. Especifique cómo soluciona Gson su problema.
– Sotirios Delimanolis
17/03/2014 a las 18:05
Además, si la biblioteca que el interrogador ya está usando ofrece una solución, intente utilizar esa biblioteca con esa solución. Si no es así, exprese que no haga una respuesta que básicamente diga “usar otra biblioteca” y luego publique enlaces a la biblioteca. Las respuestas deben explicar los enlaces que tienen asociados, no solo ser volcados de enlaces.
– cero298
17/03/2014 a las 18:21
murales
Esto funcionó para mí:
JSONArray jsonarr = (JSONArray) new JSONParser().parse(new InputStreamReader(Nameofclass.class.getResourceAsStream(pathToJSONFile)));
JSONObject jsonobj = (JSONObject) new JSONParser().parse(new InputStreamReader(Nameofclass.class.getResourceAsStream(pathToJSONFile)));
Esto no responde la pregunta. Especifique cómo soluciona Gson su problema.
– Sotirios Delimanolis
17/03/2014 a las 18:05
Además, si la biblioteca que el interrogador ya está usando ofrece una solución, intente utilizar esa biblioteca con esa solución. Si no es así, exprese que no haga una respuesta que básicamente diga “usar otra biblioteca” y luego publique enlaces a la biblioteca. Las respuestas deben explicar los enlaces que tienen asociados, no solo ser volcados de enlaces.
– cero298
17/03/2014 a las 18:21
Surendra Kumar
Solución simple:
JsonElement element = new JsonParser().parse(new InputStreamReader(inputStream));
JSONObject jsonObject = new JSONObject(element.getAsJsonObject().toString());
JsonParser no está disponible
– Gabor
24 mayo 2018 a las 19:36
¿Ha sido útil esta solución?
Tu feedback nos ayuda a saber si la solución es correcta y está funcionando. De esta manera podemos revisar y corregir el contenido.
Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos.
Configurar y más información
Lo que tienes está bien. Podrías extraer el
BufferedReader
leer a un método auxiliar estático y reutilizarlo. Algunas bibliotecas de terceros ya lo hacen.– Sotirios Delimanolis
17/03/2014 a las 17:52