//TODO 优化它 #region Public 方法 /// <inheritdoc/> public string Format(object obj, FormDataFormatOptions options = default) { var jobject = JObject.FromObject(obj); var kvs = jobject.Children().Select(m => { if (m is JProperty property) { return(property); } return(null); }).Where(m => m != null); if (options.RemoveEmptyKey) { kvs = kvs.Where(m => !string.IsNullOrWhiteSpace(m !.Value.ToString())); } var items = options.UrlEncode ? kvs.Select(m => $"{FormContentUtil.Encode(m!.Name)}={FormContentUtil.Encode(m!.Value.ToString())}") : kvs.Select(m => $"{m!.Name}={m!.Value}"); return(string.Join("&", items)); }
/// <inheritdoc/> public string Format(object obj, FormDataFormatOptions options = default) { if (obj is null) { return(string.Empty); } var jsonData = JsonSerializer.SerializeToUtf8Bytes(obj, _jsonSerializerOptions); using var jsonDocument = JsonDocument.Parse(jsonData, _jsonDocumentOptions); IEnumerable <JsonProperty> kvs = jsonDocument.RootElement.EnumerateObject(); if (options.RemoveEmptyKey) { kvs = kvs.Where(m => !string.IsNullOrWhiteSpace(m.Value.ToString())); } var items = options.UrlEncode ? kvs.Select(m => $"{FormContentUtil.Encode(m.Name)}={FormContentUtil.Encode(m.Value.ToString())}") : kvs.Select(m => $"{m.Name}={m.Value}"); return(string.Join("&", items)); }