diff options
| author | Claus Vium <cvium@users.noreply.github.com> | 2020-11-14 17:31:52 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-11-14 17:31:52 +0100 |
| commit | 569874a212e550d034d7c4ded5d95b6b770bf07a (patch) | |
| tree | baa7adea16b5638f456b13c82ad4e08e91b9a2ef /MediaBrowser.Common/Json/Converters/JsonCommaDelimitedArrayConverter.cs | |
| parent | 121d79a395df8a79e6441086ae81a97b975f3d90 (diff) | |
| parent | 450cd614acdd2425d1fc713ebeb7e5b3a7156a06 (diff) | |
Merge pull request #4473 from crobibero/binder-no-throw
Don't throw exception when converting values using binder or JsonConvā¦
Diffstat (limited to 'MediaBrowser.Common/Json/Converters/JsonCommaDelimitedArrayConverter.cs')
| -rw-r--r-- | MediaBrowser.Common/Json/Converters/JsonCommaDelimitedArrayConverter.cs | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/MediaBrowser.Common/Json/Converters/JsonCommaDelimitedArrayConverter.cs b/MediaBrowser.Common/Json/Converters/JsonCommaDelimitedArrayConverter.cs index bf7048c37..b24a49761 100644 --- a/MediaBrowser.Common/Json/Converters/JsonCommaDelimitedArrayConverter.cs +++ b/MediaBrowser.Common/Json/Converters/JsonCommaDelimitedArrayConverter.cs @@ -32,13 +32,34 @@ namespace MediaBrowser.Common.Json.Converters return Array.Empty<T>(); } - var entries = new T[stringEntries.Length]; + var parsedValues = new object[stringEntries.Length]; + var convertedCount = 0; for (var i = 0; i < stringEntries.Length; i++) { - entries[i] = (T)_typeConverter.ConvertFrom(stringEntries[i].Trim()); + try + { + parsedValues[i] = _typeConverter.ConvertFrom(stringEntries[i].Trim()); + convertedCount++; + } + catch (FormatException) + { + // TODO log when upgraded to .Net5 + // _logger.LogWarning(e, "Error converting value."); + } } - return entries; + var typedValues = new T[convertedCount]; + var typedValueIndex = 0; + for (var i = 0; i < stringEntries.Length; i++) + { + if (parsedValues[i] != null) + { + typedValues.SetValue(parsedValues[i], typedValueIndex); + typedValueIndex++; + } + } + + return typedValues; } return JsonSerializer.Deserialize<T[]>(ref reader, options); |
