こんにちは。
Python から JavaScript ソースを生成し、その中には JSON データを直書きしてみました。また書き込みデータは zlib 圧縮しました。このソースが実行されると元通りのデータ内容が得られました(伸長には pako.min.js を使用、下記例では console.log()
へ表示)。
temp.html
$ ./print_html.py > temp.html
$ cat temp.html
<script src="pako.min.js"></script>
<script>
var jsonz = "789cab56caad54b252502a2e2d482d52d251502a0033ac14a24d4ccd74144ccdcc63818289e5a9c5f9b9a920850589d9f94ab500bf3b1015";
console.log(parse(jsonz));
function parse(hexstr) {
return JSON.parse(pako.inflate(unhexlify(hexstr), {to: 'string'}));
}
function unhexlify(hexstr) {
var result = '';
for (var i=0, l=hexstr.length; i<l; i+=2) {
result += String.fromCharCode(parseInt(hexstr.substr(i, 2), 16));
}
return result;
}
</script>
print_html.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import json, zlib
jsondata = {'my': 'super', 'puper': [456, 567], 'awesome': 'pako'}
jsonz = zlib.compress(json.dumps(jsondata).encode()).hex()
js = f'''
var jsonz = "{jsonz}";
console.log(parse(jsonz));
'''
js += '''
function parse(hexstr) {
return JSON.parse(pako.inflate(unhexlify(hexstr), {to: 'string'}));
}
function unhexlify(hexstr) {
var result = '';
for (var i=0, l=hexstr.length; i<l; i+=2) {
result += String.fromCharCode(parseInt(hexstr.substr(i, 2), 16));
}
return result;
}
'''
html = f'''
<script src="pako.min.js"></script>
<script>{js}</script>'''
print(html)