1

すべての StackOverflow の回答は役に立ちませんでした。私のJSONは、それらと私が検索した他のすべての場所によれば正しいように見えますが、問題ないようです。

JSON ファイルを Java で読み込めません。これについて本当に助けが必要です。

これが私の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 に答える