Да, параметры функции должны быть переданы в виде строки.
Если вы хотите передать JSON в функцию, вы можете преобразовать данные в строку и проанализировать их внутри метода.
Например,:
data = "{\"field1\":\"value1\",\"field2\":\"value2\"}"
var response = await contract.submitTransaction('myFunction', data);
А потом в вашей цепочке код
async myFunction(ctx, data){
data = JSON.parse(data);
//... your logics
}