ANDROID - 如何从sqlite字段中分离JSONObject值

时间:2017-11-23 05:16:24

标签: java android json sqlite

我在android中有CallMethodActionsqlite的结构如下:

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分开?

3 个答案:

答案 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);
相关问题