2017-01-06 3 views
0

Ich mag diesesSpeichern Sie die JSONObject Wert in der Datenbank als einzelne Einheit innerhalb Datenbank

if (dlCovs.has("vecatg")) { 
      this.COVCategory = dl_covData.getJSONObject("dlCovs").getJSONArray("vecatg").toString(); 
      // this.COVCategory = dl_covData.get("vecatg").toString(); 
     } 
     if (dlCovs.has("covabbrv")) { 
      // this.classOfVehicle = dl_covData.get("covabbrv").toString(); 
      this.classOfVehicle = dl_covData.getJSONObject("dlCovs").getJSONArray("covabbrv").toString(); 
     } 
     if (dlCovs.has("dcIssuedt")) { 
      // this.issueDate = dl_covData.get("dcIssuedt").toString(); 
      this.issueDate = dl_covData.getJSONObject("dlCovs").getJSONArray("dcIssuedt").toString(); 
     } 

Problem ist es die Speicherung der Entir Zeichenfolge in die Datenbank

{ 
"dlCovs": 
    { 
"covabbrv":["MCWG","LMV"], 
"dcIssuedt":["01-11-2011 XYZ","01-11-2011 XYZ"], 
"vecatg":["01-11-2011 XYZ ","01-11-2011 XYZ"],"status":"valid"}, 
"status":"valid" 
    } 

ich den folgenden Code haben eine JSON haben , wie gegen den Wert von "covabbrv" speichert den Wert wie ["MCWG", "LMV"] aber ich möchte, dass alle diese Werte innerhalb des Arrays gespeichert werden sollen Einzeln wie MCWG als eine Einheit und LMV als eine andere Entität in der Datenbank , jede Hilfe wird sehr spürbar sein, danke im Voraus.

+0

erwähnen, was Datenbank Sie –

+0

@smn_onrocks r mit i mySQL Datenbank bin mit, das Problem ist nicht mit der Datenbank tatsächlich das Problem eher logischer Ebene ist – Mavericks

Antwort

1

Sie erhalten müssen Sie Ihre Datenbank normalisieren, um sicherzustellen, dass Sie in jeder Spalte nur Atom-Felder haben. Um Duplikate zu vermeiden, sollten Sie Ihre Tabelle in zwei Tabellen aufteilen. Siehe https://en.wikipedia.org/wiki/Database_normalization.

In Ihrem Fall benötigen Sie eine separate Tabelle mit Covabbrvs mit einem Forging Key zu Ihrer Haupttabelle, so dass Sie mehrere Covabbrvs für eine Haupteinheit haben können.

Sie können Ihren eigenen Code für das schreiben, aber da Sie Java verwenden, würde ich Abbildung Ihre JSON zu einer Klasse Java Entity vorschlagen, und @ElementCollection Anmerkung für das covabbrv Feld verwenden, wie hier beschrieben: https://en.wikibooks.org/wiki/Java_Persistence/ElementCollection#Example_of_an_ElementCollection_relationship_to_a_basic_value_database im Vergleich zur Datenbank Persistenzgrad

0
if (dlCovs.has("vecatg")) { 
     this.COVCategory = dl_covData.getJSONObject("dlCovs").getJSONArray("vecatg").toString(); 
     // this.COVCategory = dl_covData.get("vecatg").toString(); 
    } 
    if (dlCovs.has("covabbrv")) { 
     JSONArray classOfVehicle = dl_covData.getJSONObject("dlCovs").getJSONArray("covabbrv"); 

     for(int i = 0; i < classOfVehicle.length(); i++) 
     { 
      String item = classOfVehicle.getString(i); 
      // now you can save item in database 
     } 
    } 
    if (dlCovs.has("dcIssuedt")) { 
     // this.issueDate = dl_covData.get("dcIssuedt").toString(); 
     this.issueDate = dl_covData.getJSONObject("dlCovs").getJSONArray("dcIssuedt").toString(); 
    } 
} 

Als erstes müssen Sie JSONArray von „covabbrv“ dann Schleife durch jsonArray zu bekommen, um einzelne Elemente

+0

es ist ihre Buddy „covabbrv“: ["MCWG", "LMV"], wie du aus dem obigen JSON sehen kannst, auch wenn es nicht ihre ist, kannst du diesen Fall einfach ignorieren und kannst du mir bitte sagen, dass ich darüber iterieren soll. – Mavericks

+0

hast du nicht bekommen Du kannst dich ausdenken, was du willst – Omer

Verwandte Themen