コンテキスト
言語: C#
プラットフォーム バージョン: Microsoft .Net Framework 4.0
オペレーティング システム: Windows 7 Professional (64 ビット)
制約: Microsoft MVC.Net 3.0
問題
最近、ブラウザーで JSON をよく見ていて、ブラウザーでローカル開発サーバー上のコントローラー アクションまたは別のコントローラー アクションを参照し、JSON を視覚的に解析して、すべてが希望どおりにフォーマットされていることを確認しています。MVC 3 シリアライザー (または JSON.Net シリアライザー) によって返される JSON は常に縮小された文字列を返すため、最終的には次のようになります。
{"Bars":[{"Name":"Ghost Bar","Address":"2440 Victory Park Lane, 33rd Floor, Dallas, TX 75219","OpenDate":"\/Date(1208062800000)\/","Status":"Open"},{"Name":"M-Street Bar","Address":"5628 Sears Street, Dallas, TX 75206","OpenDate":"\/Date(1064811600000)\/","Status":"Closed"},{"Name":"Zephyr\u0027s Lounge","Address":"3520 Greenville Avenue, Dallas, TX 75206","OpenDate":"\/Date(981007200000)\/","Status":"Open"}]}
少なくともデバッグ中に、 JsonResult
を「整形」して、次のように見えるようにする方法を見つけたいと思います。
{
"Bars": [
{
"Name": "Ghost Bar",
"Address": "2440 Victory Park Lane, 33rd Floor, Dallas, TX 75219",
"OpenDate": "\/Date(1208062800000)\/",
"Status": "Open"
},
{
"Name": "M-Street Bar",
"Address": "5628 Sears Street, Dallas, TX 75206",
"OpenDate": "\/Date(1064811600000)\/",
"Status": "Closed"
},
{
"Name": "Zephyr\u0027s Lounge",
"Address": "3520 Greenville Avenue, Dallas, TX 75206",
"OpenDate": "\/Date(981007200000)\/",
"Status": "Open"
}
]
}
JSON を貼り付けてフォーマットできるオンラインツールがいくつか あることは知っています。これは余分なステップであり、多くの時間を費やしています。私はプログラムによる解決策を好むでしょう。また、構成または #if コンパイラ ディレクティブを介してオン/オフできるようにしたいと考えています。
私はすでにこれに関する大まかな検索を行っており、Stack Overflow でこの投稿に出くわしました。ただし、指定されたコード例は完全ではありません。いくつかのリンクも提供されていますが、それらは死んでいるようです。
いずれにせよ、ActionResult から「整形された」JSON を取得する方法を見つけたいと思います。どんな助けでも感謝します。
次のソース コードは、私が例として示した最初の整形されていない JSON 文字列を再現します。自由にコピー/貼り付け/編集してください。
using System.Collections.Generic;
using System.Text;
using System.Web.Mvc;
namespace PrettyJsonResult.Controllers
{
public class DefaultController : Controller
{
public JsonResult Index()
{
var foo = new Foo();
foo.Bars.Add(new Bar { Address = "2440 Victory Park Lane, 33rd Floor, Dallas, TX 75219", Name = "Ghost Bar", Status = "Open" });
foo.Bars.Add(new Bar { Address = "5628 Sears Street, Dallas, TX 75206", Name = "M-Street Bar", Status = "Closed" });
foo.Bars.Add(new Bar { Address = "3520 Greenville Avenue, Dallas, TX 75206", Name = "Zephyr's Lounge", Status = "Open" });
return Json(foo, "application/json", Encoding.UTF8, JsonRequestBehavior.AllowGet);
}
}
public class Foo
{
public Foo()
{
Bars = new List<Bar>();
}
public List<Bar> Bars { get; set; }
}
public class Bar
{
public string Name { get; set; }
public string Address { get; set; }
public string Status { get; set; }
}
}