有没有一种方法可以将sqlite转换为json?所有其他问题都是解析json并保存到sqlite。我似乎找不到任何关于这个的参考,请帮助我。
我在应用程序中有一个sqlite数据库,需要将其转换为json,升级数据库版本,解析早期转换的json并添加另一个表。对此有什么建议吗?
提前感谢。
有没有一种方法可以将sqlite转换为json?所有其他问题都是解析json并保存到sqlite。我似乎找不到任何关于这个的参考,请帮助我。
我在应用程序中有一个sqlite数据库,需要将其转换为json,升级数据库版本,解析早期转换的json并添加另一个表。对此有什么建议吗?
提前感谢。
如果您不想编写代码,可以使用以下简便方法:
请注意,由于某种原因,它无法正确转换 NULL 值。 它会将其转换为空字符串... 除此之外,就我所知,它的工作非常完美。
如果你已经安装了json1扩展,那么可以使用sqlite:
// https://www.sqlite.org/json1.html
// https://gist.github.com/akehrer/481a38477dd0518ec0086ac66e38e0e2
var _sql = "SELECT json_group_array( json_object('id', id, 'name', name) ) AS json_result FROM (SELECT * FROM ipfs ORDER BY id); ";
sql.js不支持json1扩展,
我的工作示例将原始记录转换为json格式
function json1_extension(_records){
var _json = [];
var _columns = _records[0].columns
var _values = _records[0].values
for (var i = 0; i < _values.length; i++) {
//console.log(_values[i]);
var _row_json = {};
var _row = _values[i];
for (var k = 0; k < _row.length; k++) {
_row_json[_columns[k]] = _row[k]
}
//console.log('_row_json...',_row_json);
_json.push(_row_json)
}
return _json
}
static JSONObject cursorToJson(Cursor c) {
JSONObject retVal = new JSONObject();
for(int i=0; i<c.getColumnCount(); i++) {
String cName = c.getColumnName(i);
try {
switch (c.getType(i)) {
case Cursor.FIELD_TYPE_INTEGER:
retVal.put(cName, c.getInt(i));
break;
case Cursor.FIELD_TYPE_FLOAT:
retVal.put(cName, c.getFloat(i));
break;
case Cursor.FIELD_TYPE_STRING:
retVal.put(cName, c.getString(i));
break;
case Cursor.FIELD_TYPE_BLOB:
retVal.put(cName, DataUtils.bytesToHexString(c.getBlob(i)));
break;
}
}
catch(Exception ex) {
Log.e(TAG, "Exception converting cursor column to json field: " + cName);
}
}
return retVal;
}