如何在SQLite数据库中存储JSON对象

时间:2013-05-17 07:23:12

标签: android database json sqlite

如何在SQLite数据库中存储JSON对象?什么是正确的方法?

一个地方是blob类型列。如果我可以将JSON对象转换为字节数组并使用Fileoutputstream

另一个想法是将文本列存储为String

import org.json.JSONObject;

JSONObject jsonObject;

public void createJSONObject(Fields fields) {
    jsonObject = new JSONObject();

    try {
        jsonObject.put("storedValue1", fields.storedValue1);
        jsonObject.put("storedValue2", fields.storedValue2);
        jsonObject.put("storedValue3", fields.storedValue3);
        jsonObject.put("storedValue4", fields.storedValue4);
        jsonObject.put("storedValue5", fields.storedValue5);
        jsonObject.put("storedValue6", fields.storedValue6);
    } catch (JSONException e) {
        e.printStackTrace();
    }
}

5 个答案:

答案 0 :(得分:70)

将JSONObject转换为String并另存为TEXT / VARCHAR。检索同一列时,将String转换为JSONObject。

例如

写入数据库

String stringToBeInserted = jsonObject.toString();
//and insert this string into DB

从数据库读取

String json = Read_column_value_logic_here
JSONObject jsonObject = new JSONObject(json);

答案 1 :(得分:26)

另一种方法是为SQLite使用新的JSON扩展。我自己只是遇到过这个问题:https://www.sqlite.org/json1.html这将允许您执行一定级别的查询存储的JSON。如果您使用VARCHAR或TEXT存储JSON字符串,则无法查询它。这是一篇很棒的文章,展示了它的用法(在python中)http://charlesleifer.com/blog/using-the-sqlite-json1-and-fts5-extensions-with-python/

答案 2 :(得分:2)

没有数据类型..您需要将其存储为VARCHAR或TEXT .. jsonObject.toString();

答案 3 :(得分:0)

这是一个非常古老的问题,但是https://github.com/requery/sqlite-android甚至允许您查询JSON字段(以及其中的数组,我已经尝试过它并且正在使用它)。在此之前,我只是将JSON字符串存储到TEXT列中。支持FTS3,FTS4和& JSON1

答案 4 :(得分:-8)

https://github.com/app-z/Json-to-SQLite

首先从JSON http://www.jsonschema2pojo.org/

生成普通旧Java对象

主要方法

void createDb(String dbName,String tableName,List dataList,Field [] fields){ ...

字段名称将动态创建