aboutsummaryrefslogtreecommitdiff
path: root/Emby.Server.Implementations/Data/SqliteItemRepository.cs
diff options
context:
space:
mode:
authorBond_009 <bond.009@outlook.com>2019-09-25 17:43:20 +0200
committerBond_009 <bond.009@outlook.com>2019-10-08 20:59:53 +0200
commite553eba31e9f0e05effc30417ee53c02d63304bd (patch)
tree7d96ff17db0b3e520bd5a8b9c14784429910fcdf /Emby.Server.Implementations/Data/SqliteItemRepository.cs
parentac9dfa8e93106d907bbf78fe2350adfa47c76cec (diff)
Use System.Text.Json api
Diffstat (limited to 'Emby.Server.Implementations/Data/SqliteItemRepository.cs')
-rw-r--r--Emby.Server.Implementations/Data/SqliteItemRepository.cs39
1 files changed, 16 insertions, 23 deletions
diff --git a/Emby.Server.Implementations/Data/SqliteItemRepository.cs b/Emby.Server.Implementations/Data/SqliteItemRepository.cs
index 2f083dda4..538beaf33 100644
--- a/Emby.Server.Implementations/Data/SqliteItemRepository.cs
+++ b/Emby.Server.Implementations/Data/SqliteItemRepository.cs
@@ -5,8 +5,11 @@ using System.IO;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
+using System.Text.Json;
+using System.Text.Json.Serialization;
using System.Threading;
using Emby.Server.Implementations.Playlists;
+using MediaBrowser.Common.Json;
using MediaBrowser.Controller;
using MediaBrowser.Controller.Channels;
using MediaBrowser.Controller.Configuration;
@@ -38,14 +41,6 @@ namespace Emby.Server.Implementations.Data
{
private const string ChaptersTableName = "Chapters2";
- private readonly TypeMapper _typeMapper;
-
- /// <summary>
- /// Gets the json serializer.
- /// </summary>
- /// <value>The json serializer.</value>
- private readonly IJsonSerializer _jsonSerializer;
-
/// <summary>
/// The _app paths
/// </summary>
@@ -53,33 +48,31 @@ namespace Emby.Server.Implementations.Data
private readonly IServerApplicationHost _appHost;
private readonly ILocalizationManager _localization;
+ private readonly TypeMapper _typeMapper;
+ private readonly JsonSerializerOptions _jsonOptions;
+
/// <summary>
/// Initializes a new instance of the <see cref="SqliteItemRepository"/> class.
/// </summary>
public SqliteItemRepository(
IServerConfigurationManager config,
IServerApplicationHost appHost,
- IJsonSerializer jsonSerializer,
- ILoggerFactory loggerFactory,
+ ILogger<SqliteItemRepository> logger,
ILocalizationManager localization)
- : base(loggerFactory.CreateLogger(nameof(SqliteItemRepository)))
+ : base(logger)
{
if (config == null)
{
throw new ArgumentNullException(nameof(config));
}
- if (jsonSerializer == null)
- {
- throw new ArgumentNullException(nameof(jsonSerializer));
- }
-
- _appHost = appHost;
_config = config;
- _jsonSerializer = jsonSerializer;
- _typeMapper = new TypeMapper();
+ _appHost = appHost;
_localization = localization;
+ _typeMapper = new TypeMapper();
+ _jsonOptions = JsonDefaults.GetOptions();
+
DbFilePath = Path.Combine(_config.ApplicationPaths.DataPath, "library.db");
}
@@ -671,7 +664,7 @@ namespace Emby.Server.Implementations.Data
if (TypeRequiresDeserialization(item.GetType()))
{
- saveItemStatement.TryBind("@data", _jsonSerializer.SerializeToBytes(item));
+ saveItemStatement.TryBind("@data", JsonSerializer.SerializeToUtf8Bytes(item, _jsonOptions));
}
else
{
@@ -1302,11 +1295,11 @@ namespace Emby.Server.Implementations.Data
{
try
{
- item = _jsonSerializer.DeserializeFromString(reader.GetString(1), type) as BaseItem;
+ item = JsonSerializer.Deserialize(reader[1].ToBlob(), type, _jsonOptions) as BaseItem;
}
- catch (SerializationException ex)
+ catch (JsonException ex)
{
- Logger.LogError(ex, "Error deserializing item");
+ Logger.LogError(ex, "Error deserializing item with JSON: {Data}", reader.GetString(1));
}
}