Skip to content

Commit 726937e

Browse files
TurnerjRehanSaeed
authored andcommitted
Pass JsonSerializer through to ToObject calls (#105)
1 parent 3d02549 commit 726937e

File tree

1 file changed

+16
-16
lines changed

1 file changed

+16
-16
lines changed

Source/Schema.NET/ValuesJsonConverter.cs

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -74,11 +74,11 @@ public override object ReadJson(
7474
if (tokenType == JsonToken.StartArray)
7575
{
7676
var unwrappedType = type.GetUnderlyingTypeFromNullable();
77-
argument = ReadJsonArray(token, unwrappedType);
77+
argument = ReadJsonArray(token, unwrappedType, serializer);
7878
}
7979
else
8080
{
81-
argument = ParseTokenArguments(token, tokenType, type, value);
81+
argument = ParseTokenArguments(token, tokenType, type, value, serializer);
8282
}
8383
}
8484
else
@@ -92,7 +92,7 @@ public override object ReadJson(
9292
var type = mainType.GenericTypeArguments[i];
9393
var unwrappedType = type.GetUnderlyingTypeFromNullable();
9494
// only read as many items as there are tokens left
95-
var args = ReadJsonArray(token, unwrappedType, count - total);
95+
var args = ReadJsonArray(token, unwrappedType, serializer, count - total);
9696

9797
if (args != null && args.Count > 0)
9898
{
@@ -120,7 +120,7 @@ public override object ReadJson(
120120

121121
try
122122
{
123-
var args = ParseTokenArguments(token, tokenType, type, value);
123+
var args = ParseTokenArguments(token, tokenType, type, value, serializer);
124124

125125
if (args != null)
126126
{
@@ -222,7 +222,7 @@ public virtual void WriteObject(JsonWriter writer, object value, JsonSerializer
222222
serializer.Serialize(writer, value);
223223
}
224224

225-
private static object ParseTokenArguments(JToken token, JsonToken tokenType, Type type, object value)
225+
private static object ParseTokenArguments(JToken token, JsonToken tokenType, Type type, object value, JsonSerializer serializer)
226226
{
227227
const string SCHEMA_ORG = "http://schema.org/";
228228
const int SCHEMA_ORG_LENGTH = 18; // equivalent to "http://schema.org/".Length
@@ -241,42 +241,42 @@ private static object ParseTokenArguments(JToken token, JsonToken tokenType, Typ
241241
{
242242
if (tokenType == JsonToken.StartObject)
243243
{
244-
args = ParseTokenObjectArguments(token, type, unwrappedType);
244+
args = ParseTokenObjectArguments(token, type, unwrappedType, serializer);
245245
}
246246
else
247247
{
248-
args = ParseTokenValueArguments(token, tokenType, type, unwrappedType, value);
248+
args = ParseTokenValueArguments(token, tokenType, type, unwrappedType, value, serializer);
249249
}
250250
}
251251

252252
return args;
253253
}
254254

255-
private static object ParseTokenObjectArguments(JToken token, Type type, Type unwrappedType)
255+
private static object ParseTokenObjectArguments(JToken token, Type type, Type unwrappedType, JsonSerializer serializer)
256256
{
257257
object args = null;
258258
var typeName = GetTypeNameFromToken(token);
259259
if (string.IsNullOrEmpty(typeName))
260260
{
261-
args = token.ToObject(unwrappedType);
261+
args = token.ToObject(unwrappedType, serializer);
262262
}
263263
else if (typeName == type.Name)
264264
{
265-
args = token.ToObject(type);
265+
args = token.ToObject(type, serializer);
266266
}
267267
else
268268
{
269269
var builtType = Type.GetType($"{NamespacePrefix}{typeName}");
270270
if (builtType != null && type.GetTypeInfo().IsAssignableFrom(builtType.GetTypeInfo()))
271271
{
272-
args = token.ToObject(builtType);
272+
args = token.ToObject(builtType, serializer);
273273
}
274274
}
275275

276276
return args;
277277
}
278278

279-
private static object ParseTokenValueArguments(JToken token, JsonToken tokenType, Type type, Type unwrappedType, object value)
279+
private static object ParseTokenValueArguments(JToken token, JsonToken tokenType, Type type, Type unwrappedType, object value, JsonSerializer serializer)
280280
{
281281
object args = null;
282282
if (unwrappedType.IsPrimitiveType())
@@ -429,7 +429,7 @@ private static object ParseTokenValueArguments(JToken token, JsonToken tokenType
429429
{
430430
if (!type.GetTypeInfo().IsInterface && !type.GetTypeInfo().IsClass)
431431
{
432-
args = token.ToObject(classType); // This is expected to throw on some case
432+
args = token.ToObject(classType, serializer); // This is expected to throw on some case
433433
}
434434
}
435435
}
@@ -454,7 +454,7 @@ private static Type ToClass(Type type)
454454
return type;
455455
}
456456

457-
private static IList ReadJsonArray(JToken token, Type type, int? count = null)
457+
private static IList ReadJsonArray(JToken token, Type type, JsonSerializer serializer, int? count = null)
458458
{
459459
var classType = ToClass(type);
460460
var listType = typeof(List<>).MakeGenericType(type); // always read into list of interfaces
@@ -472,7 +472,7 @@ private static IList ReadJsonArray(JToken token, Type type, int? count = null)
472472
var typeName = GetTypeNameFromToken(childToken);
473473
if (string.IsNullOrEmpty(typeName))
474474
{
475-
var child = childToken.ToObject(classType);
475+
var child = childToken.ToObject(classType, serializer);
476476
var method = listType.GetRuntimeMethod(nameof(List<object>.Add), new[] { classType });
477477

478478
if (method != null)
@@ -487,7 +487,7 @@ private static IList ReadJsonArray(JToken token, Type type, int? count = null)
487487
var builtType = Type.GetType($"{NamespacePrefix}{typeName}");
488488
if (builtType != null && type.GetTypeInfo().IsAssignableFrom(builtType.GetTypeInfo()))
489489
{
490-
var child = (Thing)childToken.ToObject(builtType);
490+
var child = (Thing)childToken.ToObject(builtType, serializer);
491491
var method = listType.GetRuntimeMethod(nameof(List<object>.Add), new[] { classType });
492492

493493
if (method != null)

0 commit comments

Comments
 (0)