Gson预计BEGIN_ARRAY但是STRING

时间:2013-04-04 19:35:07

标签: java json gson

所有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)

任何人都可以告诉我,我做错了什么?

1 个答案:

答案 0 :(得分: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;
}