'Loading JSON with json.loads in Python gives JSONDecodeError because of "

I am trying to turn a Javascript from a website into a JSON structure with Python's json.loads() but it gives a JSONDecodeError. It's because there are objects in the Javascript which are quoted, and when json.loads() runs, it turns " into a " (double quote), which produces bad JSON.

This is a very small example of the Javascript:

{"key":{"hascookie":"yes"}, "cookiestatus":234, "widget":null, "player":"{"source":true,"country"}"}

There is a lot of JSON, and it's minified. I am loading it like this:

j = 'JSON text'
result = json.loads(j)

Is the solution prevent the loads() function to unquote the JSON and leave the " as is?



Solution 1:[1]

Here is a possible solution (if I understand the problem correctly...):

import json

s = '{"source":true,"country":"GB"}'

class myEncoder(json.JSONDecoder):
    def decode(self, s):
        s = s.replace('"', '\"')
        return json.JSONDecoder.decode(self, s)
    
decoded = json.loads(s, cls=myEncoder)
print(decoded)

Output is correct JSON: {'source': True, 'country': 'GB'}

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Nechoj