0
点赞
收藏
分享

微信扫一扫

Nancy获取Request.Form的所有参数

using System;
  using System.Collections;
  using System.Collections.Generic;
  using System.Collections.ObjectModel;
  using System.Dynamic;
  using System.Linq;
  using System.Web;
  using System.Web.Script.Serialization;
  namespace Base
  {
  public class JsonDynamicUtil
  {
  public static dynamic ToDynamic(string json)
  {
  JavaScriptSerializer jss =new JavaScriptSerializer();
  jss.RegisterConverters(new JavaScriptConverter[] { new DynamicJsonConverter() });
  dynamic dy=jss.Deserialize(json, typeof(object)) as dynamic;
  return dy;
  }
  public static string ToJson(dynamic d)
  {
  JavaScriptSerializer oSerializer =new JavaScriptSerializer();
  oSerializer.RegisterConverters(new JavaScriptConverter[] { new ExpandoJSONConverter() });
  string json= oSerializer.Serialize(d);
  return json;
  }
  public static List

ToList(string json)

  {
  JavaScriptSerializer jss =new JavaScriptSerializer();
  jss.RegisterConverters(new JavaScriptConverter[] { new DynamicJsonConverter() });
  List

dy=jss.Deserialize(json, typeof(List

)) as List

;



  return dy;
  }
  }
  public class DynamicJsonConverter : JavaScriptConverter
  {
  public override object Deserialize(IDictionary

dictionary, Type type, JavaScriptSerializer serializer)

  {
  if (dictionary==null)
  throw new ArgumentNullException("dictionary");
  if (type==typeof(object))
  {
  return new DynamicJsonObject(dictionary);
  }
  return null;
  }
  public override IDictionary

Serialize(object obj, JavaScriptSerializer serializer)

  {
  throw new NotImplementedException();
  }
  public override IEnumerable

SupportedTypes

  {
  get { return new ReadOnlyCollection

(new List

(new Type[] { typeof(object) })); }


  }
  }
  public class DynamicJsonObject : DynamicObject
  {
  private IDictionary

Dictionary { get; set; }

  public DynamicJsonObject(IDictionary

dictionary)

  {
  this.Dictionary= dictionary;
  }
  public override bool TryGetMember(GetMemberBinder binder, out object result)
  {
  result =this.Dictionary[binder.Name];
  if (result is IDictionary

)

  {
  result =new DynamicJsonObject(result as IDictionary

);

  }
  else if (result is ArrayList && (result as ArrayList) is IDictionary

)

  {
  result =new List

((result as ArrayList).ToArray().Select(x=> new DynamicJsonObject(x as IDictionary

)));


  }
  else if (result is ArrayList)
  {
((result as ArrayList).ToArray());
  }
  return this.Dictionary.ContainsKey(binder.Name);
  }
  }
  public class ExpandoJSONConverter : JavaScriptConverter
  {
  public override object Deserialize(IDictionary

dictionary, Type type, JavaScriptSerializer serializer)

  {
  throw new NotImplementedException();
  }
  public override IDictionary

Serialize(object obj, JavaScriptSerializer serializer)

  {
  var result=new Dictionary

();

  var dictionary=obj as IDictionary

;

  foreach (var item in dictionary)
  result.Add(item.Key, item.Value);
  return result;
  }
  public override IEnumerable

SupportedTypes

  {
  get
  {
  return new ReadOnlyCollection

(new Type[] { typeof(System.Dynamic.ExpandoObject) });

  }
  }
  }
  }

举报

相关推荐

0 条评论