2017-10-31 6 views
0

に渡す私はこのような何かをしようとするWeb APIをコントローラがあります。モデルでasp.netのWeb APIリストのJSON AJAX

public IHttpActionResult Get() 
{ 

    var Rooms = db.Rooms.Select(r => new { 
     Id = r.Id, 
     Name = r.Name, 
     ChairNum = r.СhairNum, 
     Requests = r.Requests.ToList() 
    }).ToList(); 

    return Ok(new { results = Rooms }); 

} 

を私はこれがあります。

public partial class Room 
{ 
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")] 
    public Room() 
    { 
     this.Requests = new HashSet<Request>(); 
    } 

    public int Id { get; set; } 
    public string Name { get; set; } 
    public int СhairNum { get; set; } 
    public bool IsProjector { get; set; } 
    public bool IsBoard { get; set; } 
    public string Description { get; set; } 

    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")] 
    public virtual ICollection<Request> Requests { get; set; } 
} 

をIこのデータをサービスに渡そうとしました。しかし、私はhttp://localhost:99999/api/Restと呼ぶと、シリアライゼーションエラーが発生します。

<ExceptionMessage> 
The "ObjectContent`1" type could not serialize the response text for the content type "application/json; charset = utf-8". 
</ ExceptionMessage> 

モデルのようなデータをjsonに渡す最も良い方法は何ですか?

+0

あなたはシリアル化のエラーを持っているとはどういう意味ですか?何のエラー?それはどのようなコードから来ていますか? – mason

+0

例からRequests = r.Requests.ToList()を削除した場合、エラーはありません – tmf

+0

あなたは私のコメントに対処していません。 – mason

答えて

1

それはWebApiConfigに置くために役立っ:

var json = config.Formatters.JsonFormatter; 
    json.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.Objects; 
    config.Formatters.Remove(config.Formatters.XmlFormatter);