如何将这个JSON解析成java对象?

时间:2011-11-07 07:08:00

标签: java json parsing gson

http://pastebin.com/rXbeKqAa

大家好我一直试图将上面的JSON解析成一个java程序并将其存储到一个对象中......(目前没有特定的结构,只要我能从对象中获取数据。)

一直试图使用GSON,但我似乎无法正确使用..

        String inputLine="";
    HttpClient httpclient= new DefaultHttpClient();
    HttpGet method = new HttpGet("http://localhost:3000/specs/215/errors.js");
    HttpResponse response =httpclient.execute(method);
    BufferedReader in = new BufferedReader(
            new InputStreamReader(
                    response.getEntity().getContent()));

    inputLine = in.readLine();
    System.out.println(inputLine);
    in.close();
    Gson gson = new Gson();
    JsonParser parser = new JsonParser();
    JsonArray array = parser.parse(inputLine).getAsJsonArray();

    for(int i=0; i < array.size(); i++) {

        Errors e = gson.fromJson(array.get(0), Errors.class);
        System.out.println(e.error.getReason());
    }

我得到的错误是:

Exception in thread "main" java.lang.IllegalStateException: This is not a JSON Array.
    at com.google.gson.JsonElement.getAsJsonArray(JsonElement.java:99)
    at test.Getter.main(Getter.java:37)

有人请指出我正确的方向吗? 感谢。

3 个答案:

答案 0 :(得分:3)

JSON字符串不是JSON数组字符串。 JSON字符串分别以{}开头和结尾,而JSON数组分别以[]开头和结尾。

这一行错了:

JsonArray array = parser.parse(inputLine).getAsJsonArray();

而是将其检索为JsonObject

答案 1 :(得分:0)

JSON Structures实现为对象,记录,结构,字典,哈希表,键控列表或关联数组。

您可以使用eval()函数来达到预期目标。 我想这会对你有帮助/

答案 2 :(得分:0)

我解决了我遇到的问题。新手错误与序列化注释。出于某种原因,我认为他们会引用类的名称而不是字段名称。但更重要的是,我还必须创建一个根级容器类来保存我的类。这允许解析所有对象。