2023-05-23 10:52:39 +00:00
|
|
|
using Newtonsoft.Json.Linq;
|
2019-06-14 03:54:25 +00:00
|
|
|
|
|
|
|
namespace NzbDrone.Common.Serializer
|
|
|
|
{
|
|
|
|
public class JsonVisitor
|
|
|
|
{
|
|
|
|
protected void Dispatch(JToken json)
|
|
|
|
{
|
|
|
|
switch (json.Type)
|
|
|
|
{
|
|
|
|
case JTokenType.Object:
|
|
|
|
Visit(json as JObject);
|
|
|
|
break;
|
|
|
|
|
|
|
|
case JTokenType.Array:
|
|
|
|
Visit(json as JArray);
|
|
|
|
break;
|
|
|
|
|
|
|
|
case JTokenType.Raw:
|
|
|
|
Visit(json as JRaw);
|
|
|
|
break;
|
|
|
|
|
|
|
|
case JTokenType.Constructor:
|
|
|
|
Visit(json as JConstructor);
|
|
|
|
break;
|
|
|
|
|
|
|
|
case JTokenType.Property:
|
|
|
|
Visit(json as JProperty);
|
|
|
|
break;
|
|
|
|
|
|
|
|
case JTokenType.Comment:
|
|
|
|
case JTokenType.Integer:
|
|
|
|
case JTokenType.Float:
|
|
|
|
case JTokenType.String:
|
|
|
|
case JTokenType.Boolean:
|
|
|
|
case JTokenType.Null:
|
|
|
|
case JTokenType.Undefined:
|
|
|
|
case JTokenType.Date:
|
|
|
|
case JTokenType.Bytes:
|
|
|
|
case JTokenType.Guid:
|
|
|
|
case JTokenType.Uri:
|
|
|
|
case JTokenType.TimeSpan:
|
|
|
|
Visit(json as JValue);
|
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public virtual void Visit(JToken json)
|
|
|
|
{
|
|
|
|
Dispatch(json);
|
|
|
|
}
|
|
|
|
|
|
|
|
public virtual void Visit(JContainer json)
|
|
|
|
{
|
|
|
|
Dispatch(json);
|
|
|
|
}
|
|
|
|
|
|
|
|
public virtual void Visit(JArray json)
|
|
|
|
{
|
2023-05-23 10:52:39 +00:00
|
|
|
foreach (var token in json)
|
2019-06-14 03:54:25 +00:00
|
|
|
{
|
|
|
|
Visit(token);
|
|
|
|
}
|
|
|
|
}
|
2019-12-22 22:08:53 +00:00
|
|
|
|
2019-06-14 03:54:25 +00:00
|
|
|
public virtual void Visit(JConstructor json)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
public virtual void Visit(JObject json)
|
|
|
|
{
|
2023-05-23 10:52:39 +00:00
|
|
|
foreach (var property in json.Properties())
|
2019-06-14 03:54:25 +00:00
|
|
|
{
|
|
|
|
Visit(property);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public virtual void Visit(JProperty property)
|
|
|
|
{
|
|
|
|
Visit(property.Value);
|
|
|
|
}
|
|
|
|
|
|
|
|
public virtual void Visit(JValue value)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|