国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(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ā)表
主站蜘蛛池模板: 张北县| 广丰县| 夏邑县| 靖宇县| 桂林市| 灌云县| 永善县| 霍林郭勒市| 白玉县| 颍上县| 东平县| 汝阳县| 绍兴县| 南皮县| 沈阳市| 宜良县| 安庆市| 大庆市| 奉节县| 盖州市| 达孜县| 海伦市| 浏阳市| 新野县| 怀柔区| 利辛县| 西乌珠穆沁旗| 金堂县| 深圳市| 镇巴县| 资中县| 越西县| 巍山| 青州市| 龙井市| 昌宁县| 青河县| 黄石市| 大足县| 武城县| 临汾市|