JSON passed to ApiController doesn't deserialize string values
<p>I'm trying to pass a JSON array to an ApiController but the string values aren't deserializing (they are set to null values). The strange thing is that I still get the correct number of elements. </p>

<p>A have an ApiController:</p>

<pre><code>[RoutePrefix("api/language")]
public class LanguagePairApiController : ApiController
</code></pre>

<p>With a post method:</p>

<pre><code>// POST: api/language/create
[HttpPost]
[Route("create")]
public string Create([FromBody]LanguagePair[] languagePairs)
</code></pre>

<p>I'm sending JSON to it:</p>

<pre><code>[
    {"Key":"Test","Value":"Test","Version":"1.0"},
    {"Key":"Areyousure","Value":"Are you sure?","Version":"1.0"},
    {"Key":"File","Value":"File","Version":"1.0"}
]
</code></pre>

<p>And this is the class I'm trying to map it to:</p>

<pre><code>public class LanguagePair
{
    public string Key { get; set; }
    public string Value { get; set; }
    public string Version { get; set; }
}
</code></pre>

<p>But the string values are coming through as null:</p>

<p><a href="https://i.stack.imgur.com/sZZgs.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/sZZgs.png" alt="enter image description here"></a></p>

<p>What am I missing?<br>
<strong>EDIT: I've figured out one answer to this and posted it below. But I'm still looking for a better answer...</strong></p>