1

所有 StackOverflow 的答案都没有帮助我。根据他们和我搜索的所有其他地方,我的 JSON 看起来是正确的,看起来很好。

我无法在 Java 中加载我的 JSON 文件,我真的需要帮助。

这是我的 JSON

{"evento":
 {"descricao":"saf","finalizado":false,"id":1,"localEvento":"asufgb","nome":"Teste",
  "convidados":
   [{"acompanhante":null,"id":"28147",
     "localHospedagem":"ATLANTE PLAZA","nome":"FooBar","nomeCracha":"FOO","observacoes":null,"participante":null,
     "publico":"FROTISTAS"}
   ]}}

这是我的代码

JsonReader reader = new JsonReader(new InputStreamReader(new FileInputStream(filePath)));

JsonObject obj = parser.parse(reader).getAsJsonObject();

Evento evento = gson.fromJson(obj.get("evento"), Evento.class);

和错误

Caused by: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was STRING
    at com.google.gson.internal.bind.JsonTreeReader.expect(JsonTreeReader.java:139)

谁能告诉我我做错了什么?

4

1 回答 1

0

我可能会采取以下方法。

import java.io.FileReader;
import java.util.List;

import com.google.gson.Gson;

public class App
{
  public static void main(String[] args) throws Exception
  {
    Evento evento = new Gson().fromJson(new FileReader("input.json"), EventoWrapper.class).evento;
    System.out.println(evento.descricao);
  }
}

class EventoWrapper
{
    Evento evento;
}

class Evento
{
    String descricao;
    String finalizado;
    int id;
    String localEvento;
    String nome;
    List<Convidado> convidados;
}

class Convidado
{
    String acompanhante;
    int id;
    String localHospedagem;
    String nome;
    String nomeCracha;
    String observacoes;
    String participante;
    String publico;
}
于 2013-04-06T13:54:13.603 回答