2016-05-13 3 views
0

私はセリウスのジレンマです。オブジェクトをJSONに変換するためにどのようなサービスを使用しますか?C#MVCコントローラをJSONに応答させる最も良い方法は何ですか?


フリストシナリオ:

私はマイクロソフトのシリアライザを使用して、コードは次のようになります、私はNewtonsoftを使用

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public JsonResult Get(string param) 
    { 
     return Json(result); 
    } 

2番目のシナリオコード例:

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public string Get(string param) 
    { 
     return JsonConvert.SerializeObject(result); 
    } 

私は何をしますか?誰がより良い、より安全で速いですか?

私はドキュメントの回答を見つけようとしますが、私はまだ疑問があります。

+0

[ASP.NET Web API](http://www.asp.net/web-api)をチェックしましたか?この特定のユースケース用に設計されたもので、シリアル化は必要ありません。あなたのタイトルが「最も簡単な方法」と言っているので、私はそれを提案します... –

答えて

1

フレームワークのJsonResultは99%の時間に適しています。 JSON.NETは高速ですが、シリアライゼーションは一般的なボトルネックではありません。だからあなたはデフォルトでJSON.NETスティックが必要な場合を除きます。ちなみに、そのままの2番目のシナリオではapplication/jsonのコンテンツは返されませんが、text/htmlです。

1

これまでの回答者は良い点を示していますが、問題にどのようにアプローチしたかに基づいて答えを出すことができます。

私のコントローラには実際にファイル内のjsonを探すルート/関数がありますが、Newtonsoftのnugetパッケージコードを使ってオブジェクトをシリアライズすることもできます。

public ActionResult XData(string id) 
    { 
     string dir = WebConfigurationManager.AppSettings["X_Path"]; 

     //search for the file 
     if (Directory.Exists(dir) && System.IO.File.Exists(Path.Combine(dir, id, "X.json"))) 
     { 
      //read the file 
      string contents = System.IO.File.ReadAllText(Path.Combine(dir, id, "X.json")); 

      //return contents of the file as json 
      return Content(contents, "application/json"); 
     } 
     return new HttpNotFoundResult(); 
    } 
関連する問題