Yeah, this is a bit more complex, but it is possible. Depending on what you're after, it is sometimes easier to use indexes, eg stuff like:
LET(X, 3,
NUMBER(IFS(
@"""{"joinPropertyType":"list","label":"Balances","propertyDefaultType":"object","resourceType":"event","type":"object","value":"balances"}"""@[0]["asset_id"] == X, @"""{"joinPropertyType":"list","label":"Balances","propertyDefaultType":"object","resourceType":"event","type":"object","value":"balances"}"""@[0]["amount"],
@"""{"joinPropertyType":"list","label":"Balances","propertyDefaultType":"object","resourceType":"event","type":"object","value":"balances"}"""@[1]["asset_id"] == X, @"""{"joinPropertyType":"list","label":"Balances","propertyDefaultType":"object","resourceType":"event","type":"object","value":"balances"}"""@[1]["amount"],
...
)
)