Ethereum: Converting a JSON Containing a SafeOperation into an EthSafeOperation Object
============================ ====================
As you’re already familiar with the Safe SDK, let’s dive into how we can convert a JSON containing a SafeOperation object into an equivalent EthSafeOperation object for Ethereum.

Step 1: Parse the JSON
First, we need to parse the JSON that contains the SafeOperation. This will give us a data structure in Python or JavaScript that represents our SafeOperation.
import json
from safe_sdk import SafeOpError
Load the JSON data from the mobile client's request
mobile_client_data = json.loads(mobile_client_request)
Parse the JSON into an object
safe_operation = SafeOp.from_json(mobile_client_data)
Step 2: Verify the Operation Type
Before creating EthSafeOperation objects, we need to ensure that our operation is valid. We can check the operation type by verifying if it’s a SafeOperation.
Check if the operation is a SafeOperation
if isinstance(safe_operation, SafeOp):
If it's valid, proceed with converting it
else:
raise SafeOpError("Invalid operation")
Step 3: Convert the JSON to an EthSafeOperation
Now that we’ve verified the operation type, we can convert the SafeOperation object into an equivalent EthSafeOperation. We use the EthSafeOperation.from_safe_operation() method provided by the Safe SDK.
Create a new EthSafeOperation from the SafeOperation object
eth_safe_operation = EthSafeOperation.from_safe_operation(safe_operation)
Sample Code
Let’s put it all together into an example function that can handle various JSON inputs:
import json
from safe_sdk import SafeOpError , SafeOp
def convert_safe_operation(json_data):
"""
Convert JSON containing to SafeOperation object into an equivalent EthSafeOperation object.
Args:
json_data (dict): A dictionary representing the JSON data from the mobile client's request.
Return:
EthSafeOperation: An EthSafeOperation object representing the converted operation.
"""
safe_operation = SafeOp.from_json(json_data)
Check if the operation is a SafeOperation
if isinstance(safe_operation, SafeOp):
If it's valid, proceed with converting it
eth_safe_operation = EthSafeOperation.from_safe_operation(safe_operation)
return eth_safe_operation
else:
raise SafeOpError("Invalid operation")
Usage
Here’s an example usage of the convert_safe_operation() function:
mobile_customer_data = {
"type": "safeOperation",
"value": {"id": 123, "data": "sample data"}
}
eth_safe_operation = convert_safe_operation(mobile_client_data)
print(eth_safe_operation.to_json())
This will output the JSON representation of the converted EthSafeOperation object.