我在android中有CallMethodAction
,sqlite
的结构如下:
sqlite
|---------|-------------------|
| id | name (BLOB type) |
| 1 | jsonObject value |
| 2 | jsonObject value |
|---------|-------------------|
的样本值为:
jsonobject value
问题:
当我想在{"AuditScheduleDetailID":12422,"AuditAnswerId":3,"LocalFindingID":9,"LocalMediaID":18,"Files":"xxx","ExtFiles":"jpg"}
或jsonobject value
中显示listview
时,是否可以将这些log
分开?
答案 0 :(得分:0)
JSONArray Obj;
Obj = your value get from sqlite.
if (Obj != null)
{
try {
for (int j = 0; j < Obj.length(); j++)
{
JSONObject jsonObject = Obj.getJSONObject(j);
String AuditScheduleDetailID=
jsonObject.optString("AuditScheduleDetailID");
// etc ...your other values
}
} catch (Exception e) {
e.printStackTrace();
}
}
根据链接:
for (Contact cn : contacts)
{
String AuditScheduleDetailID=cn.getID();
String Name= cn.getName();
}
答案 1 :(得分:0)
您可以将$this->app->singleton('HelpSpot\API', function ($app) {
return new HelpSpot\API($app->make('HttpClient'));
});
存储为字符串并使用JsonObject
进行检索,并将Cursor
转换为String
JsonObject
答案 2 :(得分:0)
如果将数据存储为数据库列中的json对象,则会丢失一些功能,例如json对象内的字段更有效地查询。例如,通过id = 1选择可以获得json对象或json数组{'foo':'bar'}
,但是您无法有效地选择每个具有foo = bar的元组。
您可以根据json对象字段设计数据库以接受列。例如&#34; AuditScheduleDetailID&#34;是一列(等)。
有时json数据不能轻易映射到单个表中的列(就像你有完全不同的json对象时)。 简单的解决方案是将它们存储在文件中并将它们组织在文件夹中。
为了回答你的问题,我建议使用像google gson这样的json序列化器/解析器。它用于将从数据库中检索到的字符串(name
字段)转换为适当的类(如Contact
)。除非name
列中的数据完全不同(如Contact类和Person类以及Car类),否则您将拥有属性由Gson填充的对象。如果包含该种类,则需要重新考虑您的设计并将不相关的对象移动到另一个表中。就像拥有Contact
表,Person
表等
Gson的文档是here。一个简单的例子是:
Contact c = new Gson().fromJson(YOUR_JSON_OBJECT_STRING, Contact.class);