私は(ほぼ)同じ2つのプロジェクトを持っています。1番目のコードから2番目のコードにコードをコピーして貼り付けます。すべてASP.NETMVCソリューションです。これらのプロジェクトでは、次のようなデータを取得します。
$.get("/api/mail", { folder: this.params.folder }, self.chosenFolderData);
また
$.get("/api/vehicle", { category: this.params.category }, self.chosenCategoryData);
最初のデータから返されたjsonデータを調べると、次のようになりました。
{"Folder":"Inbox","Mails":[{"MailId":4,"Folder":"Inbox","From":"XLN <basia@framehome.xyz>","To":"steve@example.com","Subject"...
ご覧のとおり、私のキーは大文字です:フォルダ、メール、フォルダ、受信トレイ、...
これは、2番目のプロジェクトで返された同じ種類のjsonです。
{"category":"Car","vehicles":[{"vehicleId":1,"category":"Car","model":"C220","brand":"Mercedes","registration":"AZE-123"}]}
すべてのキーは小文字で返されます:カテゴリ、車両、モデル、ブランド、...
なぜですか?
UPDATE_ _ __ _ ___
要求に応じて、次のWebAPIアクションが呼び出されます。
// GET api/Vehicle
public GetVehiclesViewModel GetVehicles(string category)
{
GetVehiclesViewModel viewModel = new GetVehiclesViewModel
{
Category = category,
Vehicles = db.Vehicles.Where(x => x.Category == category).OrderByDescending(u => u.Model).AsEnumerable()
};
return viewModel;
}
そしてここにviewModelがあります:
public class GetVehiclesViewModel
{
public string Category { get; set; }
public IEnumerable<VehicleModel> Vehicles { get; set; }
}
WebAPIのルーティングには、次のものもあります。
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
// Use camel case for JSON data.
config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
さて、今、私はこれを削除すると、ついに発見しました:
config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
次に、私のプロパティキーはキャメルケースに入れられます。誰かが私に理由を説明できますか?