将Android sqlite表导入json数组

时间:2017-09-16 08:33:26

标签: android json sqlite

我有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;
}

2 个答案:

答案 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"} ]

您需要解决冲突