麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

ExpandoObject對象的JSON序列化

2019-11-17 03:13:10
字體:
供稿:網(wǎng)友

ExpandoObject對象的JSON序列化

如果:

dynamic expando = new ExpandoObject(); d.SomePRop=SomeValueOrClass;

然后,我們在控制器中:

return new JsonResult(expando);

那么,我們的前臺將會得到:

[{"Key":"SomeProp", "Value": SomeValueOrClass}]

而實際上,我們知道,JSON 格式的內(nèi)容,應(yīng)該是這樣的:

{SomeProp: SomeValueOrClass}

于是乎,我們需要一個自定義的序列化器,它應(yīng)該如下:

public class ExpandoJSONConverter : javaScriptConverter {     public override IEnumerable<Type> SupportedTypes     {         get         {             return new ReadOnlyCollection<Type>(new Type[] { typeof(System.Dynamic.ExpandoObject) });         }     }

    public override object Deserialize(IDictionary<string, object> dictionary, Type type, JavascriptSerializer serializer)     {         throw new NotImplementedException();     }

    public override IDictionary<string, object> Serialize(object obj, JavaScriptSerializer serializer)     {         var result = new Dictionary<string, object>();         var dictionary = obj as IDictionary<string, object>;         foreach (var item in dictionary)         {             result.Add(item.Key, item.Value);         }

        return result;     } }

現(xiàn)在,我們的控制器應(yīng)該像這樣寫:

public ContentResult GetSomeThing(string categores) {     return ControllProctector.Do1(() =>         {

            …             var serializer = new JavaScriptSerializer();             serializer.RegisterConverters(new JavaScriptConverter[] { new ExpandoJSONConverter() });             var json = serializer.Serialize(expando);             return new ContentResult             {                 Content = json,                 ContentType = "application/json"             };         }); }

我們的瀏覽器就能得到正確的 JSON 字符串了。

 

備注:其它的方法還有

一:

dynamic expando = new ExpandoObject(); expando.Blah = 42; expando.Foo = "test"; ...

var d = expando as IDictionary<string, object>; d.Add("SomeProp", SomeValueOrClass);

// After you've added the properties you would like. d = d.ToDictionary(x => x.Key, x => x.Value); return new JsonResult(d);

二: JSON.NET

dynamic expando = new ExpandoObject(); expando.name = "John Smith"; expando.age = 30;

var json = JsonConvert.SerializeObject(expando);

三:Content-method:

public ActionResult Data() {     dynamic expando = new ExpandoObject();     expando.name = "John Smith";     expando.age = 30;

    var json = JsonConvert.SerializeObject(expando);

    return Content(json, "application/json"); }

參考:http://stackoverflow.com/questions/5156664/how-to-flatten-an-expandoobject-returned-via-jsonresult-in-asp.net-mvc


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产一区日韩一区 | 最新av在线免费观看 | 爱视频福利| 羞羞的动漫在线观看 | 国产一级在线看 | 午夜国产精品成人 | 亚洲成人午夜精品 | 国产精品视频免费在线观看 | 黄色的视频免费观看 | 福利在线小视频 | 国产精品视频免费在线观看 | 久久久久久久久久网站 | 国产99久久精品一区二区 | 久久精品亚洲精品国产欧美kt∨ | 欧美重口另类videos人妖 | 久久免费精品视频 | 久草视频在线看 | 国产成年人网站 | av在线直播观看 | 久久精品中文字幕一区 | 亚洲综合视频网 | 青草视频在线观看视频 | 天天色狠狠干 | 黄色免费播放网站 | 国产二区三区四区 | 久久色伦理资源站 | 久久精品re | 国产精品视频导航 | 嫩呦国产一区二区三区av | 免费国产不卡午夜福在线 | 在线免费小视频 | 91精品国产日韩91久久久久久360 | 福利免费观看 | www.热 | 久久久久久久久浪潮精品 | 精品亚洲综合 | 91精品国产91久久久 | 欧美日韩精品一区二区三区蜜桃 | 国产中文一区 | 亚洲精品成人18久久久久 | 美女视频黄视大全视频免费网址 |