2017-06-26 2 views
0

Ich versuche einige JSON-Daten mit dem cordova-sqlite-Porter in eine Datenbank einer Ionic 2 App zu importieren. Es funktioniert fast gut, aber ich kann nicht die Zeichen ' und " entkommen. Hier ist ein JSON ich importieren möchten:Ionic 2 importJsonToDb() Escape-Zeichen

let sqlJsonBlock = '{"data":{"inserts":{' 
    + '"TABLENAME":[{' 
     + '"LABEL":"Here are some "Characters"",' 
     + '"ID":11,' 
     + '"NUMBER":"0004"' 
    + '}]' 
+ '}}};' 

this.sqliteporter.importJsonToDb(db, JSON.parse(sqlJsonBlock)); 

Also das Wort Charaktere mit Zitaten importiert werden sollen aber nicht. Ich habe versucht, die Zeichen wie ""Characters"" oder mit führenden Schrägstrichen wie \"Characters\" oder beide \"\"Characters\"\"\\\"Characters\\\" Doppel-Flucht, aber nichts scheint zu funktionieren.

Kann jemand diese Zeichen in JSON entkommen, um sie in eine SQLite-DB zu importieren?

EDIT:

ich die Test-Daten in einigem echten JSON-Objekt gewickelt und es erfolgreich importiert, aber dann die Flucht-Zeichen werden auch in die DB importiert. Nachdem ich die Daten erneut ausgewählt habe, bekomme ich eine Zeichenfolge wie Here are some \"Characters\". Das funktioniert also auch nicht.

Antwort

0

Wenn Sie bei complex_dump.json im example project für die Plugin anschauen, werden Sie einige Beispiele sehen, wie das Plugin erwartet Anführungszeichen (und anderer spezieller Charaters) in der JSON-Struktur maskiert werden, zum Beispiel:

"Title": "Up An' Atom", 
"Composer": "Enotris Johnson/Little Richard/Robert \"Bumps\" Blackwell", 
"Name": "Cavalleria Rusticana \\ Act \\ Intermezzo Sinfonico", 

Also, in Ihrem Beispiel soll es sein:

let sqlJsonBlock = '{"data":{"inserts":{' 
    + '"TABLENAME":[{' 
     + '"LABEL":"Here are some \"Characters\"",' 
     + '"ID":11,' 
     + '"NUMBER":"0004"' 
    + '}]' 
+ '}}};' 

this.sqliteporter.importJsonToDb(db, sqlJsonBlock); 

Hinweis: Sie müssen nicht den JSON-String analysieren müssen, wie das Plugin es für Sie tun.

Aber es wäre einfacher, nur einen JSON Objektliteral zu definieren:

let sqlJsonBlock = { 
    "data":{ 
     "inserts":{ 
      "TABLENAME":[{ 
       "LABEL":"Here are some \"Characters\"", 
       "ID":11, 
       "NUMBER":"0004" 
      }] 
     } 
    } 
}; 

this.sqliteporter.importJsonToDb(db, sqlJsonBlock); 
+0

Ich versuchte wirklich, dass, aber es funktioniert nicht. Die Daten werden ohne umgangene Anführungszeichen importiert, und wenn ich die Anführungszeichen hinzufüge, wie Sie erwähnt haben, passiert nichts. Nicht einmal ein Fehler wird gemeldet. Einfache Anführungszeichen '' 'können auf diese Weise mitgestrichen werden, die doppelten Anführungszeichen jedoch nicht. – N43