JSON-RPC error on ExecuteContractFunction in unity3d when trying to pass json as an argument

calling ExecuteContractFunction and passing single argument or array of arguments isnt a problem, they work fine.
but when i try to pass a json string as an argument, it throws the following error
Call to MyFunction failed due to: Internal JSON-RPC error.: eth_sendTransaction

code that lets single argument and array of arguments pass through

    HexBigInteger value = new HexBigInteger(0);
    HexBigInteger gas = new HexBigInteger(0);
    HexBigInteger gasPrice = new HexBigInteger(0);

but when i use above values for json argument function, i get JSON-RPC error
so i tried following values

    HexBigInteger value = new HexBigInteger(0);
    HexBigInteger gas = new HexBigInteger(3000000);
    HexBigInteger gasPrice = new HexBigInteger(3000000);

this time on my metamask wallet, the transaction went through, but when i checked on polygonScan, it shows transaction failed.

following code i use to call execute contract function and pass json as an argument

public static async Task<string> ExecuteContractFuction()
{

    newArg neArg = new newArg();
    neArg.testId = 1;
    neArg.testNumber = 210;
    string jsonArg = JsonUtility.ToJson(neArg);
    Debug.Log("zuzu jsonArg = " + jsonArg);
    object[] newArgs =
    {
        jsonArg
    };
    HexBigInteger value = new HexBigInteger(0);
    HexBigInteger gas = new HexBigInteger(0);
    HexBigInteger gasPrice = new HexBigInteger(0);

    string resp = "";

    try
    {
        resp = await Moralis.ExecuteContractFunction(address, abi, TestContract.Function.testFunctionTwo, newArgs, value, gas, gasPrice);
    }
    catch (Exception exception)
    {
        resp = exception.ToString();
    }
    return resp;
}
public class newArg
{
    public int testId, testNumber;
}

following is the log in code above
zuzu jsonArg = {"testId":1,"testNumber":210}

so what am i doing wrong here ?

What is the contract address and ABI you’re using?

code that lets single argument and array of arguments pass through

What previously worked (arguments and function name)?

so function that takes in single argument works

    object[] args =
        {
            1
        };

functions that takes in array of argument works as well

    object[] args =
        {
            1,210
        };

but function that takes in json string as an argument doesnt work

public class newArg
{
    public int testId, testNumber;
}


    newArg neArg = new newArg();
    neArg.testId = 1;
    neArg.testNumber = 210;
    string jsonArg = JsonUtility.ToJson(neArg);

    object[] args =
        {
            jsonArg
        };

Try a test with:

object[] args =
        {
            '{"testId":1,"testNumber":210}'
        };

nope. single inverted coma is throwing error in c#.
error CS1012: Too many characters in character literal

check this out. i updated the question so you can have better understanding.
@alex