mirror of
https://github.com/LukeHagar/plexcsharp.git
synced 2025-12-06 12:37:46 +00:00
94 lines
2.8 KiB
C#
94 lines
2.8 KiB
C#
//------------------------------------------------------------------------------
|
|
// <auto-generated>
|
|
// This code was generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
|
|
//
|
|
// Changes to this file may cause incorrect behavior and will be lost when
|
|
// the code is regenerated.
|
|
// </auto-generated>
|
|
//------------------------------------------------------------------------------
|
|
#nullable enable
|
|
namespace LukeHagar.PlexAPI.SDK.Utils
|
|
{
|
|
using Newtonsoft.Json;
|
|
using Newtonsoft.Json.Linq;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
|
|
public class AnyDeserializer : JsonConverter
|
|
{
|
|
public override bool CanConvert(Type objectType)
|
|
{
|
|
return (objectType == typeof(Dictionary<string, object>));
|
|
}
|
|
|
|
public override bool CanWrite => false;
|
|
|
|
public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer)
|
|
{
|
|
throw new NotSupportedException();
|
|
}
|
|
|
|
public override object ReadJson(
|
|
JsonReader reader,
|
|
Type objectType,
|
|
object? existingValue,
|
|
JsonSerializer serializer
|
|
)
|
|
{
|
|
if (reader.TokenType == JsonToken.StartObject) {
|
|
return ParseTokenIntoDictionary(JToken.Load(reader));
|
|
}
|
|
throw new JsonSerializationException($"Could not deserialize token into dictionary");
|
|
}
|
|
|
|
private Dictionary<string, object?> ParseTokenIntoDictionary(JToken token)
|
|
{
|
|
var dict = new Dictionary<string, object?>();
|
|
|
|
foreach (var child in token.Children<JProperty>())
|
|
{
|
|
|
|
object? val = null;
|
|
if (child.Value is JObject)
|
|
{
|
|
val = ParseTokenIntoDictionary(child.Value);
|
|
}
|
|
else if (child.Value is JArray)
|
|
{
|
|
val = ParseTokenIntoList(child.Value);
|
|
}
|
|
else if (child.Value != null)
|
|
{
|
|
val = ((JValue)child.Value).Value;
|
|
}
|
|
|
|
dict[child.Name] = val;
|
|
}
|
|
|
|
return dict;
|
|
}
|
|
|
|
private List<object?> ParseTokenIntoList(JToken token)
|
|
{
|
|
var list = new List<object?>();
|
|
|
|
foreach (var child in token.Children())
|
|
{
|
|
if (child is JObject)
|
|
{
|
|
list.Add((object)ParseTokenIntoDictionary(child));
|
|
}
|
|
else if (child is JArray)
|
|
{
|
|
list.Add((object)ParseTokenIntoList(child));
|
|
}
|
|
else
|
|
{
|
|
list.Add(((JValue)child).Value);
|
|
}
|
|
}
|
|
|
|
return list;
|
|
}
|
|
}
|
|
} |