Lưu ý: Câu hỏi này rất gần với Embedding JSON objects in script tags, nhưng câu trả lời cho câu hỏi đó cung cấp những gì tôi đã biết (trong JSON /
== \/
). Tôi muốn biết làm thế nào để làm điều đó thoát.Làm cách nào để thoát khỏi đóng '/' trong thẻ HTML bằng JSON bằng Python?
Đặc tả HTML cấm các thẻ HTML bị đóng ở bất kỳ đâu trong phần tử <script>
. Vì vậy, điều này gây ra lỗi phân tích cú pháp:
<script>
var assets = [{
"asset_created": null,
"asset_id": "575155948f7d4c4ebccb02d4e8f84d2f",
"body": "<script></script>"
}];
</script>
Trong trường hợp của tôi, tôi là tạo ra tình hình không hợp lệ bằng cách làm cho một chuỗi JSON bên trong một mẫu Django, ví dụ:
<script>
var assets = {{ json_string }};
</script>
Tôi biết rằng JSON phân tích \/
giống như /
, vì vậy nếu tôi chỉ có thể thoát khỏi các thẻ HTML đóng của tôi trong chuỗi JSON, tôi sẽ tốt. Nhưng, tôi không chắc chắn cách tốt nhất để làm điều này.
cách tiếp cận ngây thơ của tôi sẽ chỉ được điều này:
json_string = '[{"asset_created": null, "asset_id": "575155948f7d4c4ebccb02d4e8f84d2f", "body": "<script></script>"}]'
escaped_json_string = json_string.replace('</', r'<\/')
Có cách nào tốt hơn? Hoặc bất kỳ gotchas mà tôi nhìn?
Nhưng điều này chỉ hoạt động cho XHTML, phải không? Với '' '', '' CDATA'' dường như không hoạt động. Đó là lý do tại sao tôi ưa thích '' \/'' thoát trong JSON. Câu hỏi đặt ra là làm thế nào để thay thế chuỗi ký tự thoát ra ngoài cách thoát khỏi văn bản. –
@GeoffreyHing Ah vâng, tôi đã giả định không chính xác phần XHTML. Tôi đã cập nhật câu trả lời của tôi cho phần thoát khỏi DJango. – cwgem
@GeoffreyHing: tàu django có bản sao riêng của simplejson mà bạn có thể nhập bằng cách sử dụng 'từ django.utils nhập simplejson', do đó bạn sẽ không cần cài đặt riêng biệt. –