我有以下脚本
$(window).load(function () {
var model = [
{
"reservation":
{
"ticketId": "782274b8-10d9-444c-8f05-3117853e3ee0",
"clubId": 70656,
"courtNumber": 1,
"crud_name": "add",
"reservationtype_name": "toernooi"
}
},
{
"reservation":
{
"ticketId": "782274b8-10d9-444c-8f05-3117853e3ee0",
"clubId": 70656,
"courtNumber": 1,
"crud_name": "update",
"reservationtype_name": "toernooi"
}
}
];
alert(JSON.stringify(model));
$.ajax({
type: "POST",
data: JSON.stringify(model),
url: "http://localhost:59854/api/incomingapi",
contentType: "application/json",
dataType: 'json',
success: function (result) { },
error: function (errResult) { }
});
});
我有以下控制器
public string Post(HttpRequestMessage request)
{
string jsonString1 = request.Content.ReadAsStringAsync().Result;
JavaScriptSerializer json_serializer = new JavaScriptSerializer();
var v1 = json_serializer.DeserializeObject("{ \"test\":\"some data\" }");
var v2 = json_serializer.DeserializeObject(jsonString1);
JObject jobj1 = JObject.Parse("{ \"test\":\"some data\" }");
JObject jobj2 = JObject.Parse(jsonString1);
return "";
}
v1和jobj1用于测试。 jsonString1充满了值。 v2在运行时填充值。
但是我只有4种方法
等于()
GetHashCode的()
的GetType()
的ToString()
当我输入我的代码时可用...
我必须将jsonString1的值jsonString1为类型保留的集合或某些我可以循环或使用linq的东西,但是当我尝试类似的东西时,值不会被填充(一切都是null或0)。
例如,下面我可以循环并使用linq但是没有填充值(0和0而不是70656和1):
var parsedVar = json_serializer.Deserialize>(jsonString1);
var clubId = parsedVar.First().clubId;//is 0 should be 70656
var courtNumber = parsedVar.First().courtNumber;//is 0 should be 1
有谁能解决这个问题? 非常感谢!
public class ReservationModelForJson
{
public string ticketId { get; set; }
public int clubId { get; set; }
public int courtNumber { get; set; }
public string crud_name { get; set; }
public string reservationtype_name { get; set; }
}
答案/解决方案:
我在下面添加了这个课程
public class JsonBinder
{
public ReservationModelForJson reservation { get; set; }
}
并将我的控制器改为
public string Post(IEnumerable reservations)
{
int clubId = reservations.First().reservation.clubId;
int courtNumber = reservations.First().reservation.courtNumber;
return "tnkx!";
}