また、無料のJson.NETライブラリをコード内に統合することもできます。
このライブラリには問題はありませんJavascriptSerializer
は循環参照の問題のようです。
これは、あなたがこのアクションを実行する場合は、以下の結果が得られます
{
"txt": "notepad.exe",
"bmp": "paint.exe",
"dib": "paint.exe",
"rtf": "wordpad.exe"
}
JsonNetResultは、単純なカスタムラッパークラスであるコントローラのアクション
public virtual ActionResult ListData() {
Dictionary<string, string> openWith = new Dictionary<string, string>();
openWith.Add("txt", "notepad.exe");
openWith.Add("bmp", "paint.exe");
openWith.Add("dib", "paint.exe");
openWith.Add("rtf", "wordpad.exe");
JsonNetResult jsonNetResult = new JsonNetResult();
jsonNetResult.Formatting = Formatting.Indented;
jsonNetResult.Data = openWith;
return jsonNetResult;
}
から出力JSONにライブラリを使用したサンプルでありますJson.NETライブラリの機能を中心に説明します。
public class JsonNetResult : ActionResult
{
public Encoding ContentEncoding { get; set; }
public string ContentType { get; set; }
public object Data { get; set; }
public JsonSerializerSettings SerializerSettings { get; set; }
public Formatting Formatting { get; set; }
public JsonNetResult() {
SerializerSettings = new JsonSerializerSettings();
}
public override void ExecuteResult(ControllerContext context) {
if (context == null)
throw new ArgumentNullException("context");
HttpResponseBase response = context.HttpContext.Response;
response.ContentType = !string.IsNullOrEmpty(ContentType)
? ContentType
: "application/json";
if (ContentEncoding != null)
response.ContentEncoding = ContentEncoding;
if (Data != null) {
JsonTextWriter writer = new JsonTextWriter(response.Output) { Formatting = Formatting };
JsonSerializer serializer = JsonSerializer.Create(SerializerSettings);
serializer.Serialize(writer, Data);
writer.Flush();
}
}
}
JSON.NETが辞書を実行できるかどうかわかりませんが、RubbleFordが要求していることを確認できますか? –
これはシームレスに機能します:)私はあなたの喜びのために自分の答えを編集しました – Lorenzo
@Lorenzo組み込みのJson(xxx)上でこれを使用しますか?どんな利点? –