如何将两个sqlite表变成JSON对象

时间:2018-07-30 01:14:53

标签: android sqlite

是否可以将sqlite的两个表(关系表)转换为JSON对象?我已经谷歌搜索,但仍然找不到转换这些表的方法。到目前为止,我只设法将一张表转换为JSON对象。如果可以的话,您能告诉我该怎么做吗?如果不是,您能给我替代方法吗?谢谢。

以下是将一张表转换为JSON对象的代码:

private JSONArray getResults()
{
    Context context = this;

    String myPath = String.valueOf(context.getDatabasePath("ekantin1.db"));// Set path to database

    String myTable = DatabaseHelper.ORDER_TABLE_NAME;//Set name of table

    SQLiteDatabase myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);

    String searchQuery = "SELECT  * FROM " + myTable;
    Cursor cursor = myDataBase.rawQuery(searchQuery, null );

    JSONArray resultSet     = 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()  );
                }
            }
        }
        resultSet.put(rowObject);
        cursor.moveToNext();
    }
    cursor.close();
    Log.d("TAG_NAME", resultSet.toString() );


    Intent pass_data = new Intent(this,BluetoothOut.class);

    pass_data.putExtra("pindah",resultSet.toString());
    startActivity(pass_data);

    return resultSet;
}
}

这是我的DatabaseHelper中的表:

//tabel order
public static final String ORDER_TABLE_NAME="tb_order";
public static final String COL_1="ORDERID";
public static final String COL_2="USERID";
public static final String COL_3="PASSWORD";
public static final String COL_4="MEJA";
public static final String COL_5="TOPUP";
public static final String COL_6="SALDO";

//tabel lineitems
public static final String LINEITEMS_TABLE_NAME="tb_lineitems";
public static final String COL1 = "FOODID";
public static final String COL2 = "PRICE";
public static final String COL3 = "NUM";
public static final String COL4 = "RES";
public static final String COL6 = "ORDERID_FK";

彼此相关的表格行项目和订单ID,其中tb_order中的orderid为PK,tb_lineitems中的orderid_fk为FK。

1 个答案:

答案 0 :(得分:0)

从数据库中导出数据的一种好方法是使用Gson,它是Google的Json序列化/反序列化库。

像往常一样从数据库中获取graph save mygraph,然后使用Objects将其转换为Json并导出。

这是您如何做的一个例子。

Gson