所以基本上我试图抓住所有这些课程,把它们放到列表视图中,当你点击每个项目时,它会带你去另一个课程描述较长的活动。如果需要,我们将使用JSON解析和asynctask来执行此操作。我找到了很少的教程,这个课是一个实验课,我之前没有java经验,也不问我为什么这是我们的任务,我的教授是疯狂的。
这是需要解析的JSON,通常我会看到一个像“name”或“number”这样的标识符,或者你可以提取和提取的东西,但由于没有,我只是完全迷失了我应该如何抓住每门课程的课程编号。我们没有书,很少有他给我们的例子,他们也没有真正与此有关。
这是JSON的课程,没有数组名称或标识符,但我应该能够神奇地知道如何分别抓住它们:
http://iam.colum.edu/portfolio/api/course?json=true
然后每个课程都有一个课程编号,所以获取json只是在URL中的“课程”之后添加该课程编号:
http://iam.colum.edu/portfolio/api/course/36-1600?json=True
36-1600是该示例的课程编号。
我真的很想知道如何完成这个的方向感。我不需要答案只是一些指导,因为我对这项任务一直盲目,聋哑,根本无法解决这个问题。
我有4个问题: - 为什么他们的JSON中没有任何标识符? - 如何拆分它们没有标识符? - 当JSON没有数组名称时,如何使用解析JSON填充列表视图 - 你知道我可以遵循哪些教程可以帮助我专门解决这个问题吗?
我急需帮助,提前谢谢你。我几乎不知道从哪里开始。
答案 0 :(得分:1)
第一个链接包含
[
"36-1200 Computer Architecture*",
"36-1300 Digital Image Design",
"36-1400 Sound for Interaction",
"36-1501 Introduction to Programming* ",
"36-1600 Character Visualization for Games",
"36-1950 Virtual Worlds Concepts",
"36-2300 Digital Image Experiments",
"36-2320 Computer Illustration*",
"36-2350 2D Art for Games ",
"36-2400 Sound Design for Games I*",
"36-2550 C++ Programming I",
"36-2600 Object Oriented Programming",
"36-2601 Authoring Interactive Media*\t ",
"36-2606 Interactive Advertising Campaign",
"36-2609 Sound and Motion*",
"36-3060 Indie Game Sprint",
"36-3100 Navigational Interfaces *",
"36-3110 Advanced Interfaces",
"36-3270 Xna Game Programming",
"36-3300 Experimental Imaging*",
"36-3301 3D Composition for Interactive Media I",
"36-3350 3D Digital Sculpting",
"36-3400 Sound Design for Games 2",
"36-3500 Programming for Games* ",
"36-3520 Programming Data Design",
"36-3600 IAM Team ",
"36-3620 Introduction to Robotics",
"36-3710 IAM Programming Topics: Mobile Programming",
"36-3994 Indie Team Game Project ",
"36-3997 Large Team Game Project",
"36-3998 Large Team Game Studio"
]
它是一个JSONArray
ArrayList<String> aa = new ArrayList<String>();
JSONArray jr = new JSONArray("your json string");
for(int i=0;i<jr.length();i++)
{
String value = (String) jr.get(i);
aa.add(value);
}
在ListView中显示
ArrayAdapter<String> adapter = new ArrayAdapter<String>(ActivityName.this,android.R.layout.simple_list_item_1,aa);
ListView lv =(ListView) findViewById(R.id.ListView);
lv.setAdapter(adapter);
您可以使用正则表达式来拆分“36-1200计算机体系结构”。
第二个链接包含
{ // json object
"CourseName": "Character Visualization for Games",
"CourseNumber": "36-1600",
"CourseDescription": "This course is on one hand a traditional drawing course, trying to assist students in their knowledge of line, value and perspective when dealing with observational drawing, while on the other hand, it is a course designed to assist in the transition between the analog and the digital world. ",
"Images": [ // json array images
"http://iam.colum.edu/images/uploads/course/130135397158529174_EddieEinikis_midterm_digitalv3.jpg",
"http://iam.colum.edu/images/uploads/course/130135393832313918_QuanVu_Punica.jpg",
"http://iam.colum.edu/images/uploads/course/130135393555293438_Beryl.jpg",
"http://iam.colum.edu/images/uploads/course/130028438639598178_SebastianAsturrizaga_Final_Render02.jpg",
"http://iam.colum.edu/images/uploads/course/130028438588739570_Quintin_UshtakWarlordCharacterSheet.jpg",
"http://iam.colum.edu/images/uploads/course/130028438464245186_Nimah_Final Temp The Ferryman.jpg",
"http://iam.colum.edu/images/uploads/course/130028438437567818_Mario.Ramirez_FinalCharacter_03.jpg",
"http://iam.colum.edu/images/uploads/course/130028438296224570_KAO_03_Lieutenant Cera.jpg",
"http://iam.colum.edu/images/uploads/course/130028438220092666_JulieWilmore_Final_WithFixes.jpg",
"http://iam.colum.edu/images/uploads/course/130028438188423042_Joi_Zara_FInal Render_01.jpg"
]
}
解析
JSONObject jb = new JSONObject(" your jsonstring");
String coursename = jb.getString("CourseName");
String coursenumber = jb.getString("CourseNumber);
String coursedescription = jb.getString("CourseDescription");
然后解析json数组Image就像你上面的json数组一样。
JSONArray jar = jb.getJSONArray("Images");
...// loop through the array and get the link
...// once you get the links download and display images.
答案 1 :(得分:0)
第一个资源有一个列表,其中每个元素都是一个字符串,字符串的第一个单词是课程ID。
例如:
JSONArray array = new JSONArray(yourJson);
for (int i = 0; i < array.length(); i++) {
String courseSpec = array.get(i);
String courseId = courseSpec.split(' ')[0]
// and use your ID!
}
String.split reference with examples
这有足够的帮助吗?
答案 2 :(得分:0)
您拥有的第一个JSON字符串是JSON数组。不需要标识符,只需要索引。
迭代每个元素,用它做任何你想做的事。
JSONArray array = new JSONArray(yourJson);
for (int i = 0; i < array.length(); i++) {
array.get(i); // and do whatever
}
查看JSON数组元素本身,您似乎需要解析它们并拆分它们以检索课程编号。然后,您可以在第二次服务中使用它。