我需要这个 JSON 解析器的帮助。我有一个容器,里面有我想要得到的评论。这是我拥有的 JSON 字符串代码:http: //www.jsoneditoronline.org/?id= b73dc60acd235f60a647c02ed3e068db 我需要从“资源”字段(内容、ID、创建者)的每个评论中获取属性。我已经尝试过这个,在其他事情之间,我无法获得我想要的。
public class CommentsParser {
public List<Comment> readJsonStream(InputStream in) throws IOException {
// Nueva instancia JsonReader
System.out.println("Longitud del inputStream para comentarios: "+ in.toString().length());
//Vemos lo que ha leido del inputStream
JsonReader reader = new JsonReader(new InputStreamReader(in, "UTF-8"));
StringWriter writer = new StringWriter();
IOUtils.copy(in, writer, "UTF-8");
String linea = writer.toString();
System.out.println("El is contiene: "+linea); // Lo que recibe en el inputStream
//Vemos lo que ha leido del reader.
System.out.println("El reader contiene: "+ reader.toString());
try {
// Leer Array
return leeArrayComentarios(reader);
} finally {
reader.close();
}
}
public List<Comment> leeArrayComentarios(JsonReader reader) throws IOException {
// Lista temporal
List<Comment> listaComentarios = new ArrayList<Comment>();
listaComentarios = formatComentario(reader);
return listaComentarios;
}
public List<Comment> formatComentario(JsonReader reader) throws IOException {
List<Comment> listaComentarios = new ArrayList<Comment>();
String situacion;
Comment comentario = new Comment();
//System.out.println("Estamos en: "+ reader.nextString());
//System.out.println("Estamos en: "+ reader.nextName());
//reader.beginObject();
while (reader.hasNext()) {
String campo = reader.nextName();
System.out.println("El objeto es:"+campo);
switch (campo) { //Cuando intenta parsear no encuentra estos case y entonces devuelve a null el usuario.
/*case "content":
Name nombre = new Name();
comentario.setContent(reader.nextString());
break;
case "isRecomment":
comentario.setIsRecomment(reader.nextBoolean());
break;
case "creator":
ActiveElement creador = new ActiveElement();
creador.setId(reader.nextLong());
comentario.setCreator(creador);*/
case "_embebed":
situacion = reader.nextName(); //Deberiamos pasar a resources
//Una vez en resources tenemos una array de comentarios.
System.out.println("Estamos en: "+ reader.nextString());
reader.beginArray();
while (reader.hasNext()) {
// Leer objeto
System.out.println("Dentro While.Estamos en: "+ reader.nextName());
}
default:
reader.skipValue();
break;
}
}
reader.endObject();
return listaComentarios;
}
}
编辑 1 - 应用 Gson:
public CommentContainer jsonToJava(String json){
CommentContainer contenedor = new CommentContainer();
Gson gson = new Gson();
contenedor = gson.fromJson(json, CommentContainer.class);
return contenedor;
}
这样,我返回的 CommentContainer 是空的。Json 字符串格式正确,如您在 JsonEditor 的 URL 中所见。
我不想要解决方案,只有我可以获得这些属性以将它们保存到对象中的方式。非常感谢。