2016-02-09 21 views
1

我有以下脚本创建正确的对象结构传入的JSON

<script> 
    $(window).load(function() { 
     var model = [ 
      { 
       "reservation": 
       { 
        "ticketId": "782274b8-10d9-444c-8f05-3117853e3ee0", 
        "clubId": 70656, 
        "courtNumber": 1, 
        "crud_name": "add", 
        "reservationtype_name": "toernooi", 
        "players" : 
         [ 
          { 
           "player" : { "id": "18674992", "name": "Jan Jansen"} 
          }, 
          { 
           "player": { "id": "19543840", "name": "Klaas Klaassen" } 
          } 
         ] 
       } 
      }, 
      { 
       "reservation": 
       { 
        "ticketId": "782274b8-10d9-444c-8f05-3117853e3ee0", 
        "clubId": 70656, 
        "courtNumber": 1, 
        "crud_name": "update", 
        "reservationtype_name": "toernooi", 
        "players": 
         [ 
          { 
           "player": { "id": "18674992", "name": "Jan Jansen" } 
          }, 
          { 
           "player": { "id": "19543840", "name": "Klaas Klaassen" } 
          } 
         ] 
       } 
      } 
     ]; 
     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) { } 
     }); 
    }); 
</script> 

我有这些类

namespace MySQLTestApp.Models 
{ 
    public class player 
    { 
     public string id { get; set; } 
     public string name { get; set; } 
    } 

    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 IEnumerable<player> players { get; set; } 
    } 

    public class JsonBinder 
    { 
     public ReservationModelForJson reservation { get; set; } 
    } 
} 

这是我的控制器

public string Post(IEnumerable<JsonBinder> reservations) 
{ 
    int clubId = reservations.First().reservation.clubId;//is 70656 
    int courtNumber = reservations.First().reservation.courtNumber;//is 1 
    string playerId = reservations.First().reservation.players.First().id;//is null, should be 18674992 
    return "tnkx!"; 
} 

的 '复杂' playersreservation中的财产不会被填充。所有简单的值都可以!正如你在上面看到的,clubIdcourtNumber有值。

我无法更改Json的格式。我必须创建一个正确的类结构。并用它来解析值...

任何人都知道正确的类结构创建?我上无法得到固定......

+0

提示:为什么不使用_Json.net_,让您的生活更轻松的方式? – melancia

回答

0

您可以使用json2csharp.com从JSON生成类。

你应该有:

public class Player2 
{ 
    public string id { get; set; } 
    public string name { get; set; } 
} 

public class Player 
{ 
    public Player2 player { get; set; } 
} 

public class Reservation 
{ 
    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 List<Player> players { get; set; } 
} 

public class RootObject 
{ 
    public Reservation reservation { get; set; } 
} 
0

根据你的模型,你应该有某种PlayerWrapper的:

public class playerWrapper 
{ 
    public player player{ get; set; } 
} 

public class player 
{ 
    public string id { get; set; } 
    public string name { get; set; } 
} 

public class ReservationModelForJson 
{ 
    ... 
    public IEnumerable<playerWrapper> players { get; set; } 
} 

public class JsonBinder 
{ 
    public ReservationModelForJson reservation { get; set; } 
} 
+0

我接受了BWA提供的有用链接的答案。这个答案也适用! –

+0

这对我来说是好的^^ – Thomas