Python json.decoder.JSONDecoder.parse_float Attribut



The Python json.decoder.JSONDecoder.parse_float attribute is used to specify a custom function for decoding floating-point numbers when parsing JSON.

By default, Python uses the built-in float type for handling floating-point values in JSON. However, this attribute allows users to replace it with an alternative function, such as decimal.Decimal for higher precision.

Syntax

Following is the syntax of using the parse_float attribute −

json.decoder.JSONDecoder(parse_float=function)

Parameter

It is a function that takes a string and returns a floating-point representation.

Return Value

The parse_float attribute affects how floating-point numbers are parsed from JSON and returns a user-defined numeric type.

Example: Using parse_float with Default float

In this example, we parse a JSON string containing floating-point numbers using the default float type −

Open Compiler
import json # JSON string with float numbers json_string = '{"price": 99.99, "tax": 5.75}' # Create JSONDecoder instance with default float decoder = json.decoder.JSONDecoder(parse_float=float) # Decode JSON parsed_data = decoder.decode(json_string) print("Parsed JSON:", parsed_data) print("Type of 'price':", type(parsed_data["price"]))

Following is the output obtained −

Parsed JSON: {'price': 99.99, 'tax': 5.75}
Type of 'price': <class 'float'>

Example: Using parse_float with decimal.Decimal

Using decimal.Decimal provides higher precision for floating-point numbers −

Open Compiler
import json from decimal import Decimal # JSON string with float numbers json_string = '{"price": 99.99, "tax": 5.75}' # Create JSONDecoder instance with Decimal for higher precision decoder = json.decoder.JSONDecoder(parse_float=Decimal) # Decode JSON parsed_data = decoder.decode(json_string) print("Parsed JSON:", parsed_data) print("Type of 'price':", type(parsed_data["price"]))

Following is the output of the above code −

Parsed JSON: {'price': Decimal('99.99'), 'tax': Decimal('5.75')}
Type of 'price': <class 'decimal.Decimal'>

Example: Using parse_float to Round Floats

You can also define a custom function to round floating-point numbers while decoding −

Open Compiler
import json # Custom function to round float values def round_float(value): return round(float(value), 2) # Rounds to 2 decimal places # JSON string with float numbers json_string = '{"price": 99.999, "tax": 5.756}' # Create JSONDecoder instance with rounding function decoder = json.decoder.JSONDecoder(parse_float=round_float) # Decode JSON parsed_data = decoder.decode(json_string) print("Rounded JSON:", parsed_data)

We get the output as shown below −

Rounded JSON: {'price': 100.0, 'tax': 5.76}

Example: Convert Floats to Strings

Another use case of parse_float is converting float numbers to strings during decoding −

Open Compiler
import json # Custom function to convert floats to strings def float_to_string(value): return f"{value} (converted)" # JSON string with float numbers json_string = '{"price": 99.99, "tax": 5.75}' # Create JSONDecoder instance with float_to_string function decoder = json.decoder.JSONDecoder(parse_float=float_to_string) # Decode JSON parsed_data = decoder.decode(json_string) print("Converted JSON:", parsed_data)

The result produced is as follows −

Converted JSON: {'price': '99.99 (converted)', 'tax': '5.75 (converted)'}
python_json.htm
Advertisements