Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

HTML tags within JSON (in Python)

I understand its not a desirable circumstance, however if I NEEDED to have some kind of HTML within JSON tags, e.g.:

{
    "node":
    {
        "list":"<ul><li class="lists">Hello World</li><ul>"
    }
}

is this possible to do in Python without requiring to to be escaped beforehand?

It will be a string initially so I was thinking about writing a regular expression to attempt to match and escape these prior to processing, but I just want to make sure there isn't an easier way.

like image 434
KeyboardInterrupt Avatar asked Sep 08 '26 22:09

KeyboardInterrupt


2 Answers

Well, depending on how varied your HTML is, you can use single quotes in HTML fine, so you could do:

{
    "node":
    {
        "list": "<ul><li class='lists'>Hello World</li><ul>"
    }
}

However, with simplejson, which is built into Python 2.6 as the json module, it does any escaping you need automatically:

>>> import simplejson
>>> simplejson.dumps({'node': {'list': '<ul><li class="lists">Hello World</li><ul>'}})
'{"node": {"list": "<ul><li class=\\"lists\\">Hello World</li><ul>"}}'
like image 194
Ben Hoyt Avatar answered Sep 11 '26 11:09

Ben Hoyt


You can have arbitrary strings there, including ones which happen to contain HTML tags (the only issue with your example is the inner " which would confuse any parser).

like image 41
Alex Martelli Avatar answered Sep 11 '26 11:09

Alex Martelli