2016-07-05 7 views
-1

私は多くの検索を行っており、この問題に関する関連情報はまだ見つけていません。どのように私は次のようなことを達成することができるかについて誰かが正しい方向に私を指すことができるかどうか疑問に思っていた:Entity Frameworkを使用してAPIにエンドポイントリクエストを保存する

私がしようとしているのは、APIエンドポイント要求を行い、結果をデータベース終わり。ここで

は私のコントローラです:

ExceptionMessage

は、現在のJSON配列(例えば、[1をデシリアライズできません:

public class Reference_ManufacturersController : ApiController 
{ 
    private DataEntities db = new DataEntities(); 
    static string _address = "http://localhost:57454/api/Reference_Manufacturers?format=json"; 
    private Reference_Manufacturers result; 

    // GET: api/Reference_Manufacturers 
    public async Task<IEnumerable<Reference_Manufacturers>> GetReference_Manufacturers() 
    { 
     Reference_Manufacturers resultset = await GetResponse(); 
     db.Reference_Manufacturers.Add(resultset); 
     await db.SaveChangesAsync(); 
     return db.Reference_Manufacturers; 
    } 

    private async Task<Reference_Manufacturers> GetResponse() 
    { 
     var client = new HttpClient(); 
     HttpResponseMessage response = await client.GetAsync(_address); 
     response.EnsureSuccessStatusCode(); 
     result = await response.Content.ReadAsAsync<Reference_Manufacturers>(); 
     return result; 
    } 
} 

私はこれを実行するとどうなりますか、私は次の例外を取得するということです、2,3])をタイプ 'DIA_FirearmsAPIversion2.Models.Reference_Manufacturers'に変換する必要があります。タイプにJSONオブジェクト(例:{"name": "value"})が必要です。このエラーを修正するには、JSONオブジェクトをJSONオブジェクト(たとえば{"name": "value"})に変更するか、またはリストなどのコレクションインターフェイス(ICollection、IListなど)を実装するタイプまたは配列に非直列化タイプを変更しますJSON配列からデシリアライズします。 JsonArrayAttributeを型に追加して、強制的にJSON配列から逆シリアル化することもできます。パス '、行1、位置1。

私は間違っていますか?

+2

jsonの例を表示できますか? – stuartd

+0

[Link](http://i693.photobucket.com/albums/vv293/saturobi360/ReferenceManufacturer_zpszktksoqf.jpg) – saturobi360

+0

'_address'から返ってきたjsonを' Reference_Manufacturers'にマッピングできないことを確かめてください。 –

答えて

0

私は見落として間違っていたことを理解しました。 返されたすべての値を保持するために、並べ替えのコンテナを使用しませんでした。

public class Reference_ManufacturersController : ApiController 
{ 
    private DataEntities db = new DataEntities(); 
    static string _address = "http://localhost:57454/api/Reference_Manufacturers?format=json"; 
    private List<Reference_Manufacturers> result; 

    // GET: api/Reference_Manufacturers 
    public async Task<IEnumerable<Reference_Manufacturers>> GetReference_Manufacturers() 
    { 
     List<Reference_Manufacturers> resultset = await GetResponse(); 
     foreach (Reference_Manufacturers manu in resultset) 
     { 
      db.Reference_Manufacturers.Add(manu); 
     } 
     await db.SaveChangesAsync(); 
     return db.Reference_Manufacturers; 
    } 

    private async Task<List<Reference_Manufacturers>> GetResponse() 
    { 
     var client = new HttpClient(); 
     HttpResponseMessage response = await client.GetAsync(_address); 
     response.EnsureSuccessStatusCode(); 
     result = await response.Content.ReadAsAsync<List<Reference_Manufacturers>>(); 
     return result; 
    }} 
関連する問題