我已经提供了更新我的应用程序的服务,它应该从网上获取JSON,如果数据是新的,则将其插入数据库中:
protected void onHandleIntent(Intent intent) {
datasource = new pollDataSource(this);
datasource.open();
// Creating JSON Parser instance
JSONParser jParser = new JSONParser();
// getting JSON string from URL
JSONObject json = jParser.getJSONFromUrl(url);
try {
// Getting Array of Contacts
domanda = json.getJSONArray(TAG_DOMANDE);
System.out.println("inside the try");
// looping through All Contacts
System.out.println("length: " + domanda.length());
for(int i = 0; i < domanda.length(); i++){
System.out.println("in the for!: " + i);
JSONObject c = domanda.getJSONObject(i);
System.out.println("raw: "+ c.getString(TAG_CATEGORIA));
// Storing each json item in variable
String id = c.getString(TAG_ID);
String testoDomanda = c.getString(TAG_TESTODOMANDA);
String categoria = c.getString(TAG_CATEGORIA);
int quanteRisposte = c.getInt(TAG_QUANTERISPOSTE);
System.out.println("string: "+categoria);
datasource.createCategoria(categoria);
//TEOTODO inserimento della categoria, se necessario
//TEOTODO inserimento della domanda
for(int ua = 0; ua < quanteRisposte; ua++){
//TEOTODO inserimento dei testi risposte.
}
}
} catch (JSONException e) {
// e.printStackTrace();
}
...
所有println的logcat是:
01-04 10:47:06.213: I/System.out(653): inside the try
01-04 10:47:06.223: I/System.out(653): length: 3
01-04 10:47:06.233: I/System.out(653): in the for!: 0
01-04 10:47:06.233: I/System.out(653): raw: zodiaco
01-04 10:47:26.773: I/System.out(653): inside the try
01-04 10:47:26.773: I/System.out(653): length: 3
01-04 10:47:26.773: I/System.out(653): in the for!: 0
01-04 10:47:26.785: I/System.out(653): raw: zodiaco
01-04 10:47:47.414: I/System.out(653): inside the try
01-04 10:47:47.423: I/System.out(653): length: 3
01-04 10:47:47.423: I/System.out(653): in the for!: 0
01-04 10:47:47.423: I/System.out(653): raw: zodiaco
01-04 10:48:07.963: I/System.out(653): inside the try
01-04 10:48:07.963: I/System.out(653): length: 3
01-04 10:48:07.963: I/System.out(653): in the for!: 0
01-04 10:48:07.973: I/System.out(653): raw: zodiaco
你可以看到我有两个问题,第一个,for应该做3次迭代,但它只做一次......为什么?
和第二个,如果我打印出原始数据,我得到的是“zodiaco”,这是我从网上获得的一个类别,但是如果我将它分配给一个字符串变量,那么,println只是忽略整行......任何人都是一个想法? :d
提前感谢。
答案 0 :(得分:0)
你的for循环可能会遇到异常,你决定用空的catch块忽略它。
处理异常时,通常有两种情况:
当你还处于开发阶段时,只需记录就可以了,但至少你会得到有关正在发生的事情的反馈。
仅使用空的catch语句吞下异常(几乎)绝不是一个好的选择。