Hello Andrey and thank you for your inquiry,
For an approach like this I would recommend grabbing the matchState as a Dictionary<string,object> and then making a new instance of JsonMatchState and filling in each field one at a time.
An example of this would look like to get one of the fields:
JsonMatchState matchState = new JsonMatchState();
var matchState = data["matchState"] as Dictionary<string, object>;
matchState.turnNumber = (int) matchState["turnNumber"];
Hope this helps and please let us know if you have further questions or inquiries about this.