0

Shodan API を使用していますが、受信した JSON をテンプレート (django) に渡すときに問題が発生しています。

これは未加工の JSON 構造です。

{"matches": [{"city": "Montreal", "updated": "02.02.2013", "ip": "24.48.3.143", "longitude": -73.5833, "data": "HTTP/1.0 200 OK\r\nDate: Sat, 02 Feb 2013 00:41:53 GMT\r\nServer: Apache/1.3.42 (Unix) mod_auth_pam/1.1.1 DAV/1.0.3 mod_ssl/2.8.31 OpenSSL/0.9.8g\r\nSet-Cookie: iomega=174.79.246.153.26931359765713476; path=/\r\nCache-Control: no-cache\r\nConnection: close\r\nTransfer-Encoding: chunked\r\nContent-Type: text/html; charset=utf-8\r\n\r\n", "country_name": "Canada", "hostnames": [], "country_code": "CA", "country": "DEPRECATED: use country_name", "latitude": 45.5, "os": "Linux 2.6.x", "port": 443}]}

そして、これは私がテンプレートに渡すデータ構造です:

[{"city": "Montreal", "updated": "02.02.2013", "os": "Linux 2.6.x", "ip": "24.48.3.143", "longitude": -73.5833, "latitude": 45.5, "hostnames": [], "country_code": "CA", "country": "DEPRECATED: use country_name", "country_name": "Canada", "data": "HTTP/1.0 200 OK\r\nDate: Sat, 02 Feb 2013 00:41:53 GMT\r\nServer: Apache/1.3.42 (Unix) mod_auth_pam/1.1.1 DAV/1.0.3 mod_ssl/2.8.31 OpenSSL/0.9.8g\r\nSet-Cookie: iomega=174.79.246.153.26931359765713476; path=/\r\nCache-Control: no-cache\r\nConnection: close\r\nTransfer-Encoding: chunked\r\nContent-Type: text/html; charset=utf-8\r\n\r\n", "port": 443}]

ご覧のとおり、その中には変換を台無しにする多くの特別な文字があります。別の問題は、要素のリストである「ホスト名」の子にあります(要素が存在する場合)...

このJSONファイルをjs/jqueryで正しい形式で処理する方法を知っている人はいますか? よろしく。

編集:私は私のjavascriptからの出力をチェックしていました.djangoビューからテンプレートに渡された特別な文字はhtmlコードに変換され、\r\n消えて解析エラーが発生します:

両方の json ファイルをhttp://json.parser.online.fr/と比較しました。

また、shodan api から受信し、ビューで操作された json は正常に機能しますが、テンプレートに渡された JSON は機能しません。

4

1 に答える 1

0

ビューからテンプレートにJSONを渡すときに質問で述べたように、問題が見つかりました。djangoはJavaScript文字列で使用される文字を変換します。

解決策は、escapejsタグをテンプレートの変数に追加することです。

{{JSON |escapejs}}

ここでドキュメントを見つけることができます:https ://docs.djangoproject.com/en/dev/ref/templates/builtins/?from = olddocs#escapejs

于 2013-02-07T18:44:31.973 に答える