我有SQLite数据库包含一个表。在表格中,我有五个字段。例如 id,name,question,year,answer.That convert jsonArray。
我尝试了下面给出的代码,它只返回一列。
try{
JSONArray jArray = new JSONArray();
cursor.moveToFirst();
while (cursor.isAfterLast() == false) {
int totalColumn = cursor.getColumnCount();
JSONObject rowObject = new JSONObject();
for (int i = 0; i < totalColumn; i++) {
if (cursor.getColumnName(i) != null) {
try {
if (cursor.getString(i) != null) {
Log.d("TAG_NAME", cursor.getString(i));
rowObject.put(cursor.getColumnName(i), cursor.getString(i));
} else {
rowObject.put(cursor.getColumnName(i), "");
}
} catch (Exception e) {
Log.d("TAG_NAME", e.getMessage());
}
}
}
jArray.put(rowObject);
cursor.moveToNext();
}
cursor.close();
Log.d("jsonA", jArray.toString());
上面的代码结果是 [{id:“1”} {id:“2”} ]
我希望在jsonArray中返回五行及其值
[{"id":"1", "name":"sh", "question":"yid", "year":"uyit", "answer":"uify"},
{"id":"2","name":"sh","question":"syusyuytu","year":"uysrtuy","answer":"sturt"} ]
我的光标查询
public Cursor listoftest() {
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.query("list_of_question_set", new String[]{ "id","name","description","questions","duration","correct","negative"}, null, null, null, null, null, null);
return cursor;
}
答案 0 :(得分:1)
试试这个
宣布一个Arraylist
ArrayList<DataPojaClass > alUser = new ArrayList<>();
尝试{
ArrayList<DataPojaClass > alUser = new ArrayList<>();
JSONArray parentArray = jsonRoot.getJSONArray();
for (int j = 0; j < parentArray.length(); j++) {
JSONObject finalObject = parentArray.getJSONObject(j);
// User
DataPojaClass user = new DataPojaClass ();
// Set user values
user.setId(finalObject.getString("id"));
user.setName(finalObject.getString("name"));
user.setQuestion(finalObject.getString("question"));
user.setYear(finalObject.getString("year"));
alUser.add(user);
}
// Finally return user list
dataset.addAll(alUser)
}
}catch(Exception E){
}
**创建DataPojaClass类**
public class DataPojaClass
{
private String id;
private String name;
private String question;
private String year;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getQuestion() {
return question;
}
public void setQuestion(String question) {
this.question = question;
}
public String getYear() {
return year;
}
public void setYear(String year) {
this.year = year;
}
public String getAnswer() {
return answer;
}
public void setAnswer(String answer) {
this.answer = answer;
}
private String answer;
}
答案 1 :(得分:1)
您对游标的查询与预期输出不匹配。您的查询列中没有年份和答案
public Cursor listoftest() {
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.query("list_of_question_set", new String[]{ "id","name","description","questions","duration","correct","negative"}, null, null, null, null, null, null);
return cursor;
}
并且您的预期输出是
[{id:"1"name:"sh",question:"yid",year:"uyit",answer:"uify"}
{ id:"2"name:"sh",question:"syusyuytu",year:"uysrtuy",answer:"sturt"} ]
您需要解决冲突