如何从在线而不是资产文件夹中读取Json

时间:2020-01-09 02:07:32

标签: java android json

我正在学习从在线制作测验应用程序,现在一切顺利。我想知道不是从资产中读取json,而是从在线读取内容是明智的,这样可以添加或更改问题,而用户不必更新应用程序。

这是JSON结构。

for l1 in geojson['geometry_coordinates']:
    for l2 in l1:
        for l3 in l2:
            lon.append(l3[0])
            lat.append(l3[1])

,要从资产读取的代码是

{"questions" : [{"category":"general","question": "Grand Central Terminal, Park Avenue, New York is the world's", "choices": ["largest railway station","highest railway station","longest railway station","None of the above"], "correctAnswer":0},
    {"category":"science","question": "Entomology is the science that studies", "choices": ["Behavior of human beings","Insects","The origin and history of technical and scientific terms","the formation of rocks"], "correctAnswer":1},

    {"category":"science", "question":"What is known as the 'master gland' of the human body?", "choices":["Thyroid gland","Pituitary gland","Pineal gland","Pancreas"],"correctAnswer":1}
  ]}

我想在加载下一个问题时显示进度加载对话框,在此感谢您的帮助。提前致谢。

2 个答案:

答案 0 :(得分:3)

最佳选择将使用REST APIs,从服务器/数据库获取数据,可以随时随地对其进行编辑

您可以学习使用Node js,它并不难,它基于JavaScript。

要从API获取JSON,可以使用Retrofit

如果您是初学者,学习和实施这些东西会有些困难,但是从长远来看,这将是最佳选择

希望有帮助!

答案 1 :(得分:1)

也许可以考虑使用两个不同的线程(或Runnables),一个线程用于下载JSON内容,另一个线程用于显示GUI。例如,看一下:Stackoverflow Post

该解决方案涉及制作Runnable,该Runnable首先将开始从在线网站下载数据,然后在下载时将当前进度更新到GUI线程上。他使用BufferedInputStream类,因此可以使用while循环读取数据,更新下载的字节数,获取当前进度,然后显示结果。我想您可以通过使用while循环在此处执行类似的操作,然后检查下载是否完成。如果是这样,您可以关闭显示器。