2017-11-23 5 views
0

zu trennen habe ich ein sqlite in android, und die Struktur der sqlite ist wie:ANDROID - Wie JSONObject Wert von SQLite-Feld

|---------|-------------------| 
| id  | name (BLOB type) | 
| 1  | jsonObject value | 
| 2  | jsonObject value | 
|---------|-------------------| 

Probenwert von jsonobject value ist:

{"AuditScheduleDetailID":12422,"AuditAnswerId":3,"LocalFindingID":9,"LocalMediaID":18,"Files":"xxx","ExtFiles":"jpg"} 

die Problem:

ist es möglich, diese jsonobject value zu trennen, wenn ich es in listview oderanzeigen möchte?

Antwort

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(); 
    } 
} 

Nach Link:

for (Contact cn : contacts) 
    { 
    String AuditScheduleDetailID=cn.getID(); 
    String Name= cn.getName(); 
    } 
+0

wenn ich ur-Code oben versucht, habe ich einen Fehler, wenn ich benutze 'Obj = db.getAllContact();' dass Android Studio sagen Sie mir 'Obj = (JSONArray) zu verwenden, db.getAllContact() 'aber dieser Code gibt mir einen Fehler' java.util.ArrayList kann nicht in org.json.JSONArray' umgewandelt werden – flix

+0

nein, das kann man so machen Obj = "{" AuditScheduleDetailID ": 12422," AuditAnswerId " : 3, "LocalFindingID": 9, "LocalMediaID": 18, "Dateien": "xxx", "ExtFiles": "jpg"} " ansonsten vollen Code anzeigen. –

+0

über den vollständigen Code, ich verweise auf [diesen Link] (https://www.androidhive.info/2011/11/android-sqlite-database-tutorial/) und die Art Daten von 'Ihrem Wert von sqlite erhalten 'ist ein' String' und kein 'JsonArray' – flix

0

können Sie JsonObject als String speichern und abrufen Cursor verwenden und konvertieren String in JsonObject

JsonObject j= new JsonObject(cursor.getString("","")); 
String s=j.getString("find_your _param"); 
0

Wenn Sie Ihre Daten als Json Objekte in Datenbank speichern Spalten verlieren Sie einige Funktionen wie Abfragen effizienter durch die Felder in diesem JSON-Objekt. Wenn Sie beispielsweise nach id = 1 suchen, erhalten Sie ein json-Objekt oder ein json-Array {'foo':'bar'}, aber Sie können nicht effizient jedes Tupel auswählen, das foo = bar hat.

Sie können Ihre Datenbank so entwerfen, dass sie Spalten gemäß den json-Objektfeldern akzeptiert. z.B. "AuditScheduleDetailID" ist eine Spalte (etc).

Manchmal können die JSON-Daten nicht einfach auf Spalten in einer einzelnen Tabelle abgebildet werden (wie wenn Sie völlig unterschiedliche JSON-Objekte haben). Die einfache Lösung besteht darin, sie in Dateien zu speichern und sie in Ordnern zu organisieren.

Für die Beantwortung Ihrer Frage empfehle ich einen JSON Serializer/Parser wie Google Gson. Es wird verwendet, um die aus Ihrer Datenbank abgerufene Zeichenfolge (das Feld name) in die entsprechende Klasse (wie Contact) zu konvertieren. Wenn Ihre Daten in der Spalte name nicht vollständig verschieden sind (wie die Kontaktklasse, die Personenklasse und die Car-Klasse), haben Sie Objekte mit Eigenschaften, die von Gson gefüllt sind. Wenn die Sorte enthalten ist, müssen Sie Ihr Design überdenken und nicht verwandte Objekte an einen anderen Tisch verschieben. Wie mit einer Contact Tabelle, einer Person Tabelle usw.

Gson-Dokumentation ist here. Ein einfaches Beispiel wäre:

Contact c = new Gson().fromJson(YOUR_JSON_OBJECT_STRING, Contact.class);