有没有办法将 sqlite 转换为 json?所有其他问题都是解析 json 并保存到 sqlite。我似乎找不到任何参考资料,请帮助我。
我在应用程序中有一个 sqlite 数据库,我需要将其转换为 json,升级数据库版本,解析先前转换的 json 并添加另一个表。关于我该怎么做有什么建议吗?
提前致谢。
如果您不想编码,可以使用快速简便的方法:
当心,出于某种原因,它不能正确转换 NULL 值。它将它转换为一个空字符串......除此之外,就我现在而言,它就像一个魅力。
sqlite,已经有 json1 扩展,你可以使用:
// 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;
}
要将 SQLite 转换为 JSON,您可以使用此 python 工具:https://github.com/Austyns/sqlite-to-json-python
你也可以使用这个在线工具https://data-converters.web.app/如果你不想编码
这个 npm 包可以完成这项工作。它可以轻松地将您的 sqlite 文件转换为 json。它还提供了操作输出的函数。