我有一个学校的任务,我必须向服务器进行身份验证。经过身份验证后,我可以使用以下方法收集(不确定它是否是正确的单词)一些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这是一个很好的图书馆,但我不知道如何使用它。还有其他想法吗?
答案 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");
}
您可以为自己的项目扩展此示例,或者研究并合并其中一个有用的库。