2017-03-13 18 views
0

私は何をする必要があるか分かりません.MySQL側の一括引用符(インポートまたはエクスポート時)を扱うか、JSONダンプで処理します。一重引用符の削除/エスケープ

私は4つのDB列を選択して返します。

def Import_Sql(): 
    c, conn = connection() 
    dictCursor = conn.cursor(MySQLdb.cursors.DictCursor) 
    data = dictCursor.execute("SELECT title, description, lat, lng FROM poi") 
    data = dictCursor.fetchall() 
    dictCursor.close 
    c.close() 
    gc.collect() 

    return data 

そこから私は誰かがテキストで単一引用符が含まれているDBのエントリを追加する場合は、すべての場合(たとえば、しかし、欠陥なしで動作し、次のJSON

[{"lat": "43.8934276", "lng": "-103.3690243", "description": "Super Amazing Place", "title": "Swimming"}] 

を返すjsonout = json.dumps(data)を行います上記の "それは素晴らしいです")JSONが無効になるため、私は私のGoogleマップでポイントにマーカを追加できなくなってしまいました。

問題がどこにあるのか誰かが私に説明することができ、それを改善するために何ができるのか、私は非常に満足しています!前もって感謝します。

+0

JSONデータがHTMLにどのように取り込まれ/埋め込まれているか、JavaScriptコンソールにエラーが表示されているかどうかを示したい場合があります。 – dana

+0

Jsonのシングルクォートは完全に有効です。たぶん、Google MapsのJavaScript実装を使用していて、シンプルな引用符でアドレスを入力している可能性があります。そのような場合は、フィールドをGoogleマップにフィードする前にエスケープする必要があります。 – Gab

+0

@Gabこれはまさに私が使っているものです。どのようにフィールドを脱出するのですか?おそらく例を教えてもらえますか? – BrettJ

答えて

1

効果的に、単一引用符を交換して、MySQLとPythonは何もJSONに追加されたスラッシュを交換することは何私がやってしまいました、それらを取り除く!そのような単純な答えは、数時間でわかりました。

jsonout = json.dumps(MySQL_Dict) 
jsonout = jsonout.replace("'", "") 
jsonout = jsonout.replace("\\", "") 

return render_template("all_places.html", jsonout = jsonout) 
1

OPのコメントに続いて、ここにこの質問に対する有効な回答があります。

Jsonは実際に引用符をサポートしていますが、問題はJsonではなくGoogleマップのJavaScriptでサポートされています。

'のアドレスは\'でエスケープされている必要があります。

あなたとJavaScriptでそれを行うことができます

str = "It's super amazing"; 
str = str.replace(/'/g, "\\'"); 
document.write(str); // = It\'s super amazing 
関連する問題