/// <summary> /// 将对象序列化成缩进结构的JSON,便于日志记录 /// </summary> /// <param name="obj"></param> /// <returns></returns> public static string ToDumpJson(this object obj) { if (obj == null) { return("null"); } DefaultJsonSerializer serializer = ObjectFactory.New <DefaultJsonSerializer>(); JsonSerializerSettings settings = serializer.GetJsonSerializerSettings(true); // 设置为缩进格式 settings.Formatting = Formatting.Indented; return(serializer.Serialize(obj, settings)); }
private object[] GetMultiObjectsFormString(string input, ActionDescription action, HttpContext context) { JObject jsonObj = JObject.Parse(input); DefaultJsonSerializer jsonnet = new DefaultJsonSerializer(); JsonSerializerSettings settings = jsonnet.GetJsonSerializerSettings(false); Newtonsoft.Json.JsonSerializer jsonSerializer = Newtonsoft.Json.JsonSerializer.CreateDefault(settings); object[] parameters = new object[action.Parameters.Length]; for (int i = 0; i < parameters.Length; i++) { FromBodyAttribute bodyAttr = action.Parameters[i].GetMyAttribute <FromBodyAttribute>(false); if (bodyAttr != null) { // 当前参数需要从整体请求体中反序列化得到参数值 parameters[i] = GetObjectFromString(input, action); } else { //尝试从JSON中获取一个片段,用这个片段来构造参数值 JToken childObj = jsonObj.GetValue(action.Parameters[i].Name, StringComparison.OrdinalIgnoreCase); if (childObj != null) { Type pType = action.Parameters[i].ParameterType; parameters[i] = childObj.ToObject(pType, jsonSerializer); } else { // 再次尝试从HTTP上下文中获取 parameters[i] = GetParameterFromHttp(context, action.Parameters[i]); } } } return(parameters); }