I have a simple back-end API written in Asp.Net Core that receives a string:

```
        [HttpPost]
        public IResult Post([FromBody] string value)
        {
            //do something with value...
        }

```

And my front-end javascript looks like this:

```
      const request = {
        method: 'POST',
        mode : "cors",
        headers: { 'Content-Type': 'application/json' },
        body: JSON.stringify({ amount, currency })
      };
      const response = await fetch(link, request);
      const data = await response.json();

```

It seems all easy peasy, but I get the following errors:  

*"Unexpected character encountered while parsing value: {. Path '', line 1, position 1."*  

*"The value field is required."* 

The problem is in the body, that is sent as JSON object:  

*{ "amount":123, "currency":"eur"}* 

Apparently the parsing creates problems.  

If, with Postman, I send this string inside the body:  

*"{ \"amount\":123, \"currency\":\"eur\"}"* 

Everything works! 

If I send it via javascript, it doesn't :( 

So, my question is: clearly c# is messing up with the type of the data in the body. It is expecting a string but it is receiving a JSON (even though, JSON.stringfy makes a string, but somehow it seems parsed back to JSON somewhere in between). 

Can I change the type on C# to something like JSON and everything will automagically work?
Is there a way to send a JSON looking string via javascript without this unwanted conversion in between?

---

Additional info: 

@StrikeGently way does not work. I get an error message saying that only 1 parameter can be passed with the [FromBody] attribute. 

@joacoleza way might work, but I would like to avoid it as it would fill my code with tens of small classes describing the input of the function.

This works. But my eyes bleed: 

```
        body:"'" + JSON.stringify({amount, currency}) + "'"

```

Is this the most elegant solution to pass a string?