Java - 需要有关JSON数组/对象和验证的帮助

时间:2012-12-14 11:47:44

标签: java arrays json validation

我有一个学校的任务,我必须向服务器进行身份验证。经过身份验证后,我可以使用以下方法收集(不确定它是否是正确的单词)一些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。

我正在通过运行System.out.println()“显示”此数据,这意味着它会显示在控制台中。但是,任务是使其出现在JFrame中。我的理解是我需要使用JSONArray和JSONObject才能执行此操作,加上JSONvalidator或类似的东西。

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

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

1 个答案:

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

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