How to convert raw javascript object to python dictionary? How to convert raw javascript object to python dictionary? json json

How to convert raw javascript object to python dictionary?


demjson.decode()

import demjson# fromjs_obj = '{x:1, y:2, z:3}'# topy_obj = demjson.decode(js_obj)

jsonnet.evaluate_snippet()

import json, _jsonnet# fromjs_obj = '{x:1, y:2, z:3}'# topy_obj = json.loads(_jsonnet.evaluate_snippet('snippet', js_obj))

ast.literal_eval()

import ast# fromjs_obj = "{'x':1, 'y':2, 'z':3}"# topy_obj = ast.literal_eval(js_obj)


I'm facing the same problem this afternoon, and I finally found a quite good solution. That is JSON5.

The syntax of JSON5 is more similar to native JavaScript, so it can help you parse non-standard JSON objects.

You might want to check pyjson5 out.


This will likely not work everywhere, but as a start, here's a simple regex that should convert the keys into quoted strings so you can pass into json.loads. Or is this what you're already doing?

In[70] : quote_keys_regex = r'([\{\s,])(\w+)(:)'In[71] : re.sub(quote_keys_regex, r'\1"\2"\3', js_obj)Out[71]: '{"x":1, "y":2, "z":3}'In[72] : js_obj_2 = '{x:1, y:2, z:{k:3,j:2}}'Int[73]: re.sub(quote_keys_regex, r'\1"\2"\3', js_obj_2)Out[73]: '{"x":1, "y":2, "z":{"k":3,"j":2}}'