1

我有一个学校任务,我必须对服务器进行身份验证。一旦通过身份验证,我就可以收集(不确定是否是正确的词)一些 JSON 数据,使用:

List <NameValuePair> nvp = new ArrayList <NameValuePair>();

nvp.add(new BasicNameValuePair("username", "test")); //used to log in to the site
nvp.add(new BasicNameValuePair("password", "test")); 
nvp.add(new BasicNameValuePair("request", "login"));
nvp.add(new BasicNameValuePair("request", "mctrainer"));
post.setEntity(new UrlEncodedFormEntity(nvp));

我使用该代码收集的数据是:

[{"correctanswerPK":"155","challenge":"Hva er Areal","answer":"En klasse","choices":["Heltallstype","En klasse","Konstruktør"]},{"correctanswerPK":"149","challenge":"Hva brukes ordet private til","answer":"Innkapsling","choices":["Innkapsling","En klasse","Heltallstype"]},{"correctanswerPK":"161","challenge":"Hva er double","answer":"Flyttallstype","choices":["Exception","Flyttallstype","En metode"]}]

这是挪威数据,但它仍然是 JSON。

我目前正在通过运行 a 来“显示”这些数据System.out.println(),这意味着它出现在控制台中。但是,任务是让它出现在 JFrame 中。我的理解是我需要使用 JSONArray 和 JSONObject 才能做到这一点,再加上 JSONvalidator 或类似的东西。

问题是我不知道该怎么做。有人可以帮助我吗?

我的老师告诉我们jtwitter.jar v2.6.9是一个很好的库,但我不知道如何使用它。还有其他想法吗?

4

1 回答 1

0

我假设您想将 JSON 文本拆分为单独的对象以显示在您的 UI 中(因为您可以只显示文本,但我想这不是您分配的重点?)。

我不建议使用不是根据您需要的中心目标构建的库。不要怀疑您的教授,但他向您推荐的库旨在检索 Twitter 数据,而不是解析 JSON(这可能是其主要目标的副作用,但这仍然不是其主要关注点)。我会推荐任何其他优秀的 JSON 库,它们都能够进行 JSON 验证和转换为 POJO(普通的旧 Java 对象)。这是一个不错的清单,可以帮助您入门

Java JSON非常容易集成到您的项目中并使用 - 它实际上是您下载并直接包含在代码中的不到 10 个类。Gson 可能是第二个最容易使用的,其次是杰克逊,它是三者中的重量级人物,但也是最强大的。下面我展示了一个使用列表中最简单的库的示例处理。它采用 JSON 格式:

[
    {"firstName" : "Bob", "lastName" : "Jones"},
    {"firstName" : "Susan", "lastName" : "Smith"},
    {"firstName" : "Melody", "lastName" : "Dumond"}
]

这是一个类似于您的数据的 JSON 数组。

final JSONArray jsonArr = new JSONArray(json);
final int numObjs = jsonArr.length();
for(int i = 0 ; i < numObjs; i++) {
    final JSONObject jsonObj = jsonArr.getJSONObject(i);
    System.out.printf("Person's name is %s, %s\n", jsonObj.get("lastName"),
        jsonObj.get("firstName");
}

您可以为自己的项目扩展此示例,或者研究并合并其他有用的库之一。

于 2012-12-14T12:24:51.463 回答