How to Implement json.loads()  in Odoo?

What is json.loads()?

✅ What is it?

  • json.loads() is a Python function from the json module that converts a JSON-formatted string into a Python dictionary or list.
  • “loads” stands for load string.
✅ Syntax

import json

python_obj = json.loads(json_string)

  • json_string: A string in JSON format (e.g., from a web request or field).
  • python_obj: Resulting Python dictionary or list.

📌 Realistic Use Cases in Odoo

 1. Handling JSON Data from a Web Controller

In Odoo, JSON data is commonly sent from a website or JavaScript call to a controller:

@http.route(‘/custom/api/submit’, type=‘json’, auth=‘user’)

def submit_data(self, **kwargs):

    data = json.loads(kwargs.get(‘payload’))

    name = data.get(‘name’)

    email = data.get(’email’)

    # Process data

    return {‘status’: ‘success’}

Here, json.loads() converts the incoming JSON string to a Python dict for use in server-side logic.

2. Reading JSON Stored in Char/Text Fields

Odoo may store serialized JSON in a Text field (e.g., product specs or settings):​

specs = json.loads(record.spec_json)

if specs.get(‘warranty’) == ‘yes’:

    record.message_post(body=“Product has warranty.”)

3. Parsing External API Response (in Custom Integrations)

When working with external APIs in Odoo:

response = requests.get(‘https://api.example.com/data’)

data = json.loads(response.text)

for item in data.get(‘items’, []):

    self.env[‘external.record’].create({

        ‘name’: item[‘title’],

        ‘code’: item[<span “>’id’],

})

✅ Summary Table

Function Purpose Odoo Use Case
json.loads() Convert JSON string → Python object Controller data, custom field, external API