Wie zu Kodieren von JSON-eingebettet in JSON

Habe ich eine JSON-Zeichenfolge und eines der Felder ist ein text Feld. Dieses Textfeld kann text enthalten, die ein Benutzer in der Benutzeroberfläche und wenn der text, den Sie eingeben, ist JSON-text, der vielleicht erläutern, die Codierung, muss ich codieren Sie Ihren text so, dass es nicht interpretiert werden als JSON in der aktuellen JSON-Struktur an den server gesendet.

Wenn die JSON-Struktur wird vom server empfangen und wird entschlüsselt, die ich brauche zu machen sicher, dass der eingebettete JSON wird entschlüsselt als text, die endet auf der Suche wie JSON in der Benutzeroberfläche.

In der Wirkung, wie Sie entkommen einem embedded JSON-string?

  • Welche Plattform? Für die meisten, wenn nicht alle JSON-Generatoren, wenn Sie geben Sie eine Zeichenfolge wird es kümmern sich um die Kodierung/Dekodierung und es gibt kein Risiko, dass es fälschlicherweise Dekodierung von JSON-Zeichenfolge, die Sie geben, es als einen Wert.
  • Ich bin mit Android und Java. Ich bin auch manuell generieren des json-Strings im code. Ich benutze Gson für einige Kodierung und Dekodierung, aber in diesem Fall mache ich es manuell mit Gson.
  • Ein string ist ein string... Entschlüsselung Ihrer "äußeren JSON" nicht automatisch Dekodieren, die "innere JSON", wie der parser nicht wissen, was der Inhalt des Strings. Es gibt nichts, was Sie zu tun haben.
  • Felix: Meine innere saite ist ein json string, der genau so aussieht wie jeder normale json-string, und wenn Sie Sie einbetten, wird es interpretiert als json. Ich möchte, dass es als text interpretiert und nicht als json.
  • In diesem Fall nur die Flucht Anführungszeichen wie würden Sie in jedem anderen string-Wert. Das ist alles. Jedoch, Ihre eigenen Rollen JSON ist in der Regel weder eine gute Idee noch aus der Ferne erforderlich, es sei denn dein Anwendungsfall sehr speziell ist und sehr, sehr begrenzt im Umfang.
  • Wie gesagt, wenn Sie es richtig machen, brauchen Sie nichts zu tun haben. Wenn es interpretiert wird, dann ist Sie inneren JSON ist kein string. So haben Sie vielleicht {"foo": [1,2,3]} statt {"foo": "[1,2,3]"}. Wenn es ein string, d.h. eine Zeichenkette innerhalb JSON, dann brauchen Sie sich keine sorgen zu machen. Ein JSON-parser nicht interpretiert strings als JSON, sonst so etwas wie {"foo": "-bar"} würde einen Fehler auslösen. Nicht bauen Sie Ihre JSON manuell, verwenden Sie immer einen encoder.
  • Danke, ich werde stick mit dem parser. Es stellt sich heraus, dass alles, was Sie wirklich besorgt sein müssen ist escaping der Anführungszeichen. Mit dem parser aber nicht entkommen, andere Zeichen wie Apostrophe, so ist es sicherer, verwenden die parser.
  • Sie müssen zu entkommen, mehr als nur Anführungszeichen, Sonderzeichen (inklusive Zeilenumbrüche) müssen ebenfalls maskiert werden, wie pro die JSON spec. Auch wenn die JSON wird ausgeführt javascript-U+2028 U+2029 müssen maskiert werden, sowie (wenn Sie auftreten)

InformationsquelleAutor AndroidDev | 2011-10-13
Schreibe einen Kommentar