Movatterモバイル変換


[0]ホーム

URL:


Python Tutorial

Python json.JSONDecoder Class



The Pythonjson.JSONDecoder class is used to deserialize JSON data (convert JSON strings into Python objects). It provides more control over how JSON is parsed, allowing custom object hooks and parsing functions.

This class is useful when working with JSON data that requires specialized decoding logic, such as custom data transformations or object reconstruction.

Syntax

Following is the syntax of the Pythonjson.JSONDecoder class −

json.JSONDecoder(object_hook=None, parse_float=None, parse_int=None, parse_constant=None, strict=True, object_pairs_hook=None)

Parameters

This class accepts the following parameters −

  • object_hook (optional): A function to transform JSON objects into custom Python objects.
  • parse_float (optional): A function to parse floating-point numbers. Default isfloat.
  • parse_int (optional): A function to parse integer numbers. Default isint.
  • parse_constant (optional): A function to parse special constants like NaN, Infinity, etc.
  • strict (optional): IfTrue, raises an error on extra commas. Default isTrue.
  • object_pairs_hook (optional): A function that processes key-value pairs while maintaining their order.

Return Value

This class returns a Python object that represents the JSON data.

Example: Basic Usage

In this example, we usejson.JSONDecoder class to manually decode a JSON string −

import json# JSON stringjson_string = '{"name": "Alice", "age": 25, "city": "New York"}'# Decode JSON stringdecoder = json.JSONDecoder()data = decoder.decode(json_string)print("Decoded Data:", data)

Following is the output obtained −

Decoded Data: {'name': 'Alice', 'age': 25, 'city': 'New York'}

Example: Custom Object Conversion

Theobject_hook parameter allows us to convert JSON objects into custom Python objects −

import json# Sample classclass Person:   def __init__(self, name, age):      self.name = name      self.age = age# Custom function to decode JSON into Person objectsdef custom_decoder(obj):   return Person(obj["name"], obj["age"])# JSON stringjson_string = '{"name": "Bob", "age": 30}'# Decode JSON with object_hookdecoder = json.JSONDecoder(object_hook=custom_decoder)person = decoder.decode(json_string)print("Decoded Person:", vars(person))

The result produced is as shown below −

Decoded Person: {'name': 'Bob', 'age': 30}

Example: Parsing Numbers

We can use theparse_int andparse_float parameters to modify how numbers are parsed −

import json# Custom parsing functionsdef parse_int_custom(value):   return int(value) * 10  # Multiply integers by 10def parse_float_custom(value):   return round(float(value), 2)  # Round floats to 2 decimal places# JSON stringjson_string = '{"integer": "5", "floating": "12.789"}'# Decode JSON with custom number parsingdecoder = json.JSONDecoder(parse_int=parse_int_custom, parse_float=parse_float_custom)data = decoder.decode(json_string)print("Parsed Data:", data)

After executing the above code, we get the following output −

Parsed Data: {'integer': 5, 'floating': 12.789}

Example: Preserving Key Order

By default, Python dictionaries maintain order in Python 3.7+, but we can explicitly use theobject_pairs_hook parameter to load a JSON object while preserving key order −

import jsonfrom collections import OrderedDict# JSON stringjson_string = '{"c": 3, "b": 2, "a": 1}'# Decode JSON while preserving key orderdecoder = json.JSONDecoder(object_pairs_hook=OrderedDict)data = decoder.decode(json_string)print("Ordered Data:", data)

Following is the output of the above code −

Ordered Data: OrderedDict([('c', 3), ('b', 2), ('a', 1)])

Example: Handling Special Constants

Theparse_constant parameter allows us to handle special constants like NaN, Infinity, and -Infinity −

import json# Custom function to handle special constantsdef parse_constant_custom(value):    return f"Special value: {value}"# JSON string with special constantsjson_string = '{"value1": NaN, "value2": Infinity, "value3": -Infinity}'# Decode JSON with custom parse_constantdecoder = json.JSONDecoder(parse_constant=parse_constant_custom)data = decoder.decode(json_string)print("Parsed Data:", data)

We get the output as shown below −

Parsed Data: {'value1': 'Special value: NaN', 'value2': 'Special value: Infinity', 'value3': 'Special value: -Infinity'}

Example: Handling JSON Arrays

Thejson.JSONDecoder class can also decode JSON arrays into Python lists −

import json# JSON string (array)json_string = '[{"name": "Alice", "age": 25}, {"name": "Bob", "age": 30}]'# Decode JSONdecoder = json.JSONDecoder()data = decoder.decode(json_string)print("Decoded List:", data)

The result produced is as follows −

Decoded List: [{'name': 'Alice', 'age': 25}, {'name': 'Bob', 'age': 30}]
python_json.htm
Print Page
Advertisements

[8]ページ先頭

©2009-2025 Movatter.jp