私のフロントエンド実装者は、かなり複雑なネストされた DTO で奇妙な問題に遭遇しています。
これは、彼がjquery ajax呼び出しを通過しているjsonです
{"Id":"507e7e5aa6305825c012c606","Name":"test fried chicken","Description":"why you no work","Servings":4,"Author":"unit test","Steps":[{"Instructions":"put chicken in egg","Ingredients":[{"PreparationId":"507e7e34a6305825c012c601","MeasureId":"kilogram","Quantity":2,"MeasureType":"weight"},{"PreparationId":"507e7e36a6305825c012c605","MeasureId":"gram","Quantity":100,"MeasureType":"weight"}]},{"Instructions":"put in flour and cook it up","Ingredients":[{"PreparationId":"507e7e35a6305825c012c603","MeasureId":"gram","Quantity":100,"MeasureType":"weight"}]}]}
これは uri/recipes への PUT として行われ、要求側で DTO のデフォルト インスタンスに変換されます (実際に逆シリアル化される情報はありません)。
リクエストからまったく同じ Json を取得して C# コードを実行すると、
var d = new ServiceStack.Text.JsonSerializer<RecipeDTO>();
var re = d.DeserializeFromString(theJson);
var client = new JsonServiceClient(uri);
client.Put<RecipeDTOResponse>("/recipes", re);
それは動作します。なぜ違いがあるのでしょうか?