Issue with custom data type serialization/deserialization #172
Unanswered
yongkansage
asked this question in
Q&A
Replies: 1 comment 9 replies
-
Custom Newtonsoft JsonConverters are not supported by Gremlinq and if these things work, it's coincidence and a hack. Instead, check out these sources for serialization/deserialization of custom types: |
Beta Was this translation helpful? Give feedback.
9 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
@danielcweber what is required to support custom data type in the data model? We got the following exception in ReadJson of custom data type (Date) converter due to reader is null. Can you please take a look to see if there is anything obvious missing? Thanks.
System.NullReferenceException: Object reference not set to an instance of an object.
at ....Models.NewtonsoftDateConverter.ReadJson(JsonReader reader, Type objectType, Object existingValue, JsonSerializer serializer) in ....\Models\Date.cs:line 228
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.DeserializeConvertable(JsonConverter converter, JsonReader reader, Type objectType, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.SetPropertyValue(JsonProperty property, JsonConverter propertyConverter, JsonContainerContract containerContract, JsonProperty containerProperty, JsonReader reader, Object target)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Populate(JsonReader reader, Object target)
at Newtonsoft.Json.JsonSerializer.PopulateInternal(JsonReader reader, Object target)
at Newtonsoft.Json.JsonSerializer.Populate(JsonReader reader, Object target)
at ExRam.Gremlinq.Core.GremlinQueryFragmentDeserializer.<>c.b__5_0(JToken jToken, Type type, IGremlinQueryEnvironment env, Func
5 overridden, IGremlinQueryFragmentDeserializer recurse) in ....\ExRam.Gremlinq\src\ExRam.Gremlinq.Core\Deserialization\GremlinQueryFragmentDeserializer.cs:line 235 at ExRam.Gremlinq.Core.GremlinQueryFragmentDeserializer.GremlinQueryFragmentDeserializerImpl.<>c__DisplayClass6_0
1.b__0(TSerialized fragment, Type type, IGremlinQueryEnvironment env, Func5 _, IGremlinQueryFragmentDeserializer recurse) in ....\ExRam.Gremlinq\src\ExRam.Gremlinq.Core\Deserialization\GremlinQueryFragmentDeserializer.cs:line 55 at lambda_method(Closure , JToken , Type , IGremlinQueryEnvironment , IGremlinQueryFragmentDeserializer ) at ExRam.Gremlinq.Core.GremlinQueryFragmentDeserializer.<>c.<AddNewtonsoftJson>b__5_1(JToken jToken, Type type, IGremlinQueryEnvironment env, Func
5 overridden, IGremlinQueryFragmentDeserializer recurse) in ....\ExRam.Gremlinq\src\ExRam.Gremlinq.Core\Deserialization\GremlinQueryFragmentDeserializer.cs:line 252at ExRam.Gremlinq.Core.GremlinQueryFragmentDeserializer.GremlinQueryFragmentDeserializerImpl.<>c__DisplayClass6_0
1.<Override>b__0(TSerialized fragment, Type type, IGremlinQueryEnvironment env, Func
5 _, IGremlinQueryFragmentDeserializer recurse) in ....\ExRam.Gremlinq\src\ExRam.Gremlinq.Core\Deserialization\GremlinQueryFragmentDeserializer.cs:line 55at lambda_method(Closure , JToken , Type , IGremlinQueryEnvironment , IGremlinQueryFragmentDeserializer )
at ExRam.Gremlinq.Core.GremlinQueryFragmentDeserializer.<>c.b__5_2(JToken jToken, Type type, IGremlinQueryEnvironment env, Func
5 overridden, IGremlinQueryFragmentDeserializer recurse) in ....\ExRam.Gremlinq\src\ExRam.Gremlinq.Core\Deserialization\GremlinQueryFragmentDeserializer.cs:line 256 at ExRam.Gremlinq.Core.GremlinQueryFragmentDeserializer.GremlinQueryFragmentDeserializerImpl.<>c__DisplayClass6_0
1.b__0(TSerialized fragment, Type type, IGremlinQueryEnvironment env, Func5 _, IGremlinQueryFragmentDeserializer recurse) in ....\ExRam.Gremlinq\src\ExRam.Gremlinq.Core\Deserialization\GremlinQueryFragmentDeserializer.cs:line 55 at lambda_method(Closure , JObject , Type , IGremlinQueryEnvironment , IGremlinQueryFragmentDeserializer ) at ExRam.Gremlinq.Core.GremlinQueryFragmentDeserializer.<>c.<AddNewtonsoftJson>b__5_9(JObject jObject, Type type, IGremlinQueryEnvironment env, Func
5 overridden, IGremlinQueryFragmentDeserializer recurse) in ....\ExRam.Gremlinq\src\ExRam.Gremlinq.Core\Deserialization\GremlinQueryFragmentDeserializer.cs:line 342at ExRam.Gremlinq.Core.GremlinQueryFragmentDeserializer.GremlinQueryFragmentDeserializerImpl.<>c__DisplayClass6_0
1.<Override>b__0(TSerialized fragment, Type type, IGremlinQueryEnvironment env, Func
5 _, IGremlinQueryFragmentDeserializer recurse) in ....\ExRam.Gremlinq\src\ExRam.Gremlinq.Core\Deserialization\GremlinQueryFragmentDeserializer.cs:line 55at lambda_method(Closure , JObject , Type , IGremlinQueryEnvironment , IGremlinQueryFragmentDeserializer )
at ExRam.Gremlinq.Core.GremlinQueryFragmentDeserializer.<>c.b__5_10(JObject jObject, Type type, IGremlinQueryEnvironment env, Func
5 overridden, IGremlinQueryFragmentDeserializer recurse) in ....\ExRam.Gremlinq\src\ExRam.Gremlinq.Core\Deserialization\GremlinQueryFragmentDeserializer.cs:line 365 at ExRam.Gremlinq.Core.GremlinQueryFragmentDeserializer.GremlinQueryFragmentDeserializerImpl.<>c__DisplayClass6_0
1.b__0(TSerialized fragment, Type type, IGremlinQueryEnvironment env, Func5 _, IGremlinQueryFragmentDeserializer recurse) in ....\ExRam.Gremlinq\src\ExRam.Gremlinq.Core\Deserialization\GremlinQueryFragmentDeserializer.cs:line 55 at lambda_method(Closure , JObject , Type , IGremlinQueryEnvironment , IGremlinQueryFragmentDeserializer ) at ExRam.Gremlinq.Core.GremlinQueryFragmentDeserializer.<>c.<AddNewtonsoftJson>b__5_11(JObject jObject, Type type, IGremlinQueryEnvironment env, Func
5 overridden, IGremlinQueryFragmentDeserializer recurse) in ....\ExRam.Gremlinq\src\ExRam.Gremlinq.Core\Deserialization\GremlinQueryFragmentDeserializer.cs:line 378at ExRam.Gremlinq.Core.GremlinQueryFragmentDeserializer.GremlinQueryFragmentDeserializerImpl.<>c__DisplayClass6_0
1.<Override>b__0(TSerialized fragment, Type type, IGremlinQueryEnvironment env, Func
5 _, IGremlinQueryFragmentDeserializer recurse) in ....\ExRam.Gremlinq\src\ExRam.Gremlinq.Core\Deserialization\GremlinQueryFragmentDeserializer.cs:line 55at lambda_method(Closure , JObject , Type , IGremlinQueryEnvironment , IGremlinQueryFragmentDeserializer )
at ExRam.Gremlinq.Core.GremlinQueryFragmentDeserializer.<>c.b__5_12(JObject jObject, Type type, IGremlinQueryEnvironment env, Func
5 overridden, IGremlinQueryFragmentDeserializer recurse) in ....\ExRam.Gremlinq\src\ExRam.Gremlinq.Core\Deserialization\GremlinQueryFragmentDeserializer.cs:line 385 at ExRam.Gremlinq.Core.GremlinQueryFragmentDeserializer.GremlinQueryFragmentDeserializerImpl.<>c__DisplayClass6_0
1.b__0(TSerialized fragment, Type type, IGremlinQueryEnvironment env, Func5 _, IGremlinQueryFragmentDeserializer recurse) in ....\ExRam.Gremlinq\src\ExRam.Gremlinq.Core\Deserialization\GremlinQueryFragmentDeserializer.cs:line 55 at lambda_method(Closure , JObject , Type , IGremlinQueryEnvironment , IGremlinQueryFragmentDeserializer ) at ExRam.Gremlinq.Core.GremlinQueryFragmentDeserializer.<>c.<AddNewtonsoftJson>b__5_13(JObject jObject, Type type, IGremlinQueryEnvironment env, Func
5 overridden, IGremlinQueryFragmentDeserializer recurse) in ....\ExRam.Gremlinq\src\ExRam.Gremlinq.Core\Deserialization\GremlinQueryFragmentDeserializer.cs:line 390at ExRam.Gremlinq.Core.GremlinQueryFragmentDeserializer.GremlinQueryFragmentDeserializerImpl.<>c__DisplayClass6_0
1.<Override>b__0(TSerialized fragment, Type type, IGremlinQueryEnvironment env, Func
5 _, IGremlinQueryFragmentDeserializer recurse) in ....\ExRam.Gremlinq\src\ExRam.Gremlinq.Core\Deserialization\GremlinQueryFragmentDeserializer.cs:line 55at lambda_method(Closure , JObject , Type , IGremlinQueryEnvironment , IGremlinQueryFragmentDeserializer )
at ExRam.Gremlinq.Core.GremlinQueryFragmentDeserializer.<>c.b__5_14(JObject jObject, Type type, IGremlinQueryEnvironment env, Func
5 overridden, IGremlinQueryFragmentDeserializer recurse) in ....\ExRam.Gremlinq\src\ExRam.Gremlinq.Core\Deserialization\GremlinQueryFragmentDeserializer.cs:line 422 at ExRam.Gremlinq.Core.GremlinQueryFragmentDeserializer.GremlinQueryFragmentDeserializerImpl.<>c__DisplayClass6_0
1.b__0(TSerialized fragment, Type type, IGremlinQueryEnvironment env, Func5 _, IGremlinQueryFragmentDeserializer recurse) in ....\ExRam.Gremlinq\src\ExRam.Gremlinq.Core\Deserialization\GremlinQueryFragmentDeserializer.cs:line 55 at lambda_method(Closure , JObject , Type , IGremlinQueryEnvironment , IGremlinQueryFragmentDeserializer ) at ExRam.Gremlinq.Core.GremlinQueryFragmentDeserializer.GremlinQueryFragmentDeserializerImpl.TryDeserialize[TSerialized](TSerialized serializedData, Type fragmentType, IGremlinQueryEnvironment environment) in ....\ExRam.Gremlinq\src\ExRam.Gremlinq.Core\Deserialization\GremlinQueryFragmentDeserializer.cs:line 44 at ExRam.Gremlinq.Core.GremlinQueryFragmentDeserializer.<>c.<AddNewtonsoftJson>b__5_13(JObject jObject, Type type, IGremlinQueryEnvironment env, Func
5 overridden, IGremlinQueryFragmentDeserializer recurse) in ....\ExRam.Gremlinq\src\ExRam.Gremlinq.Core\Deserialization\GremlinQueryFragmentDeserializer.cs:line 390at ExRam.Gremlinq.Core.GremlinQueryFragmentDeserializer.GremlinQueryFragmentDeserializerImpl.<>c__DisplayClass6_0
1.<Override>b__0(TSerialized fragment, Type type, IGremlinQueryEnvironment env, Func
5 , IGremlinQueryFragmentDeserializer recurse) in ....\ExRam.Gremlinq\src\ExRam.Gremlinq.Core\Deserialization\GremlinQueryFragmentDeserializer.cs:line 55at lambda_method(Closure , JObject , Type , IGremlinQueryEnvironment , IGremlinQueryFragmentDeserializer )
at ExRam.Gremlinq.Core.GremlinQueryFragmentDeserializer.<>c.b__5_14(JObject jObject, Type type, IGremlinQueryEnvironment env, Func
5 overridden, IGremlinQueryFragmentDeserializer recurse) in ....\ExRam.Gremlinq\src\ExRam.Gremlinq.Core\Deserialization\GremlinQueryFragmentDeserializer.cs:line 422 at ExRam.Gremlinq.Core.GremlinQueryFragmentDeserializer.GremlinQueryFragmentDeserializerImpl.<>c__DisplayClass6_0
1.b__0(TSerialized fragment, Type type, IGremlinQueryEnvironment env, Func5 _, IGremlinQueryFragmentDeserializer recurse) in ....\ExRam.Gremlinq\src\ExRam.Gremlinq.Core\Deserialization\GremlinQueryFragmentDeserializer.cs:line 55 at lambda_method(Closure , JToken , Type , IGremlinQueryEnvironment , IGremlinQueryFragmentDeserializer ) at ExRam.Gremlinq.Core.GremlinQueryFragmentDeserializer.GremlinQueryFragmentDeserializerImpl.TryDeserialize[TSerialized](TSerialized serializedData, Type fragmentType, IGremlinQueryEnvironment environment) in ....\ExRam.Gremlinq\src\ExRam.Gremlinq.Core\Deserialization\GremlinQueryFragmentDeserializer.cs:line 44 at ExRam.Gremlinq.Core.GremlinQueryFragmentDeserializer.<>c.<AddNewtonsoftJson>b__5_17(JArray jArray, Type type, IGremlinQueryEnvironment env, Func
5 overridden, IGremlinQueryFragmentDeserializer recurse) in ....\ExRam.Gremlinq\src\ExRam.Gremlinq.Core\Deserialization\GremlinQueryFragmentDeserializer.cs:line 466at ExRam.Gremlinq.Core.GremlinQueryFragmentDeserializer.GremlinQueryFragmentDeserializerImpl.<>c__DisplayClass6_0
1.<Override>b__0(TSerialized fragment, Type type, IGremlinQueryEnvironment env, Func
5 , IGremlinQueryFragmentDeserializer recurse) in ....\ExRam.Gremlinq\src\ExRam.Gremlinq.Core\Deserialization\GremlinQueryFragmentDeserializer.cs:line 55at lambda_method(Closure , JToken , Type , IGremlinQueryEnvironment , IGremlinQueryFragmentDeserializer )
at ExRam.Gremlinq.Core.GremlinQueryFragmentDeserializer.GremlinQueryFragmentDeserializerImpl.TryDeserialize[TSerialized](TSerialized serializedData, Type fragmentType, IGremlinQueryEnvironment environment) in ....\ExRam.Gremlinq\src\ExRam.Gremlinq.Core\Deserialization\GremlinQueryFragmentDeserializer.cs:line 44
at ExRam.Gremlinq.Core.GremlinQueryFragmentDeserializer.<>c.b__5_12(JObject jObject, Type type, IGremlinQueryEnvironment env, Func
5 overridden, IGremlinQueryFragmentDeserializer recurse) in ....\ExRam.Gremlinq\src\ExRam.Gremlinq.Core\Deserialization\GremlinQueryFragmentDeserializer.cs:line 383 at ExRam.Gremlinq.Core.GremlinQueryFragmentDeserializer.GremlinQueryFragmentDeserializerImpl.<>c__DisplayClass6_0
1.b__0(TSerialized fragment, Type type, IGremlinQueryEnvironment env, Func5 _, IGremlinQueryFragmentDeserializer recurse) in ....\ExRam.Gremlinq\src\ExRam.Gremlinq.Core\Deserialization\GremlinQueryFragmentDeserializer.cs:line 55 at lambda_method(Closure , JObject , Type , IGremlinQueryEnvironment , IGremlinQueryFragmentDeserializer ) at ExRam.Gremlinq.Core.GremlinQueryFragmentDeserializer.<>c.<AddNewtonsoftJson>b__5_13(JObject jObject, Type type, IGremlinQueryEnvironment env, Func
5 overridden, IGremlinQueryFragmentDeserializer recurse) in ....\ExRam.Gremlinq\src\ExRam.Gremlinq.Core\Deserialization\GremlinQueryFragmentDeserializer.cs:line 390at ExRam.Gremlinq.Core.GremlinQueryFragmentDeserializer.GremlinQueryFragmentDeserializerImpl.<>c__DisplayClass6_0
1.<Override>b__0(TSerialized fragment, Type type, IGremlinQueryEnvironment env, Func
5 , IGremlinQueryFragmentDeserializer recurse) in ....\ExRam.Gremlinq\src\ExRam.Gremlinq.Core\Deserialization\GremlinQueryFragmentDeserializer.cs:line 55at lambda_method(Closure , JObject , Type , IGremlinQueryEnvironment , IGremlinQueryFragmentDeserializer )
at ExRam.Gremlinq.Core.GremlinQueryFragmentDeserializer.<>c.b__5_14(JObject jObject, Type type, IGremlinQueryEnvironment env, Func
5 overridden, IGremlinQueryFragmentDeserializer recurse) in ....\ExRam.Gremlinq\src\ExRam.Gremlinq.Core\Deserialization\GremlinQueryFragmentDeserializer.cs:line 422 at ExRam.Gremlinq.Core.GremlinQueryFragmentDeserializer.GremlinQueryFragmentDeserializerImpl.<>c__DisplayClass6_0
1.b__0(TSerialized fragment, Type type, IGremlinQueryEnvironment env, Func5 _, IGremlinQueryFragmentDeserializer recurse) in ....\ExRam.Gremlinq\src\ExRam.Gremlinq.Core\Deserialization\GremlinQueryFragmentDeserializer.cs:line 55 at lambda_method(Closure , Object , Type , IGremlinQueryEnvironment , IGremlinQueryFragmentDeserializer ) at ExRam.Gremlinq.Core.GremlinQueryFragmentDeserializer.GremlinQueryFragmentDeserializerImpl.TryDeserialize[TSerialized](TSerialized serializedData, Type fragmentType, IGremlinQueryEnvironment environment) in ....\ExRam.Gremlinq\src\ExRam.Gremlinq.Core\Deserialization\GremlinQueryFragmentDeserializer.cs:line 44 at ExRam.Gremlinq.Core.GremlinQueryExecutionResultDeserializer.GremlinQueryExecutionResultDeserializerImpl.Deserialize[TElement](Object executionResult, IGremlinQueryEnvironment environment) in ....\ExRam.Gremlinq\src\ExRam.Gremlinq.Core\Deserialization\GremlinQueryExecutionResultDeserializer.cs:line 21 at ExRam.Gremlinq.Core.GremlinQuery
6.<ExRam.Gremlinq.Core.IGremlinQueryBase.ToAsyncEnumerable>b__208_0(Object executionResult) in ....\ExRam.Gremlinq\src\ExRam.Gremlinq.Core\Queries\GremlinQuery.explicit.cs:line 232at System.Linq.AsyncEnumerable.SelectManyAsyncIterator
2.MoveNextCore() in /_/Ix.NET/Source/System.Linq.Async/System/Linq/Operators/SelectMany.cs:line 463 at System.Linq.AsyncIteratorBase
1.MoveNextAsync() in //Ix.NET/Source/System.Linq.Async/System/Linq/AsyncIterator.cs:line 70at System.Linq.AsyncIteratorBase
1.MoveNextAsync() in /_/Ix.NET/Source/System.Linq.Async/System/Linq/AsyncIterator.cs:line 75 at System.Linq.AsyncEnumerable.<TryGetFirst>g__Core|291_0[TSource](IAsyncEnumerable
1 source, CancellationToken cancellationToken) in //Ix.NET/Source/System.Linq.Async/System/Linq/Operators/FirstOrDefault.cs:line 119at System.Linq.AsyncEnumerable.g__Core|291_0[TSource](IAsyncEnumerable
1 source, CancellationToken cancellationToken) in /_/Ix.NET/Source/System.Linq.Async/System/Linq/Operators/FirstOrDefault.cs:line 121 at System.Linq.AsyncEnumerable.<FirstOrDefaultAsync>g__Core|287_0[TSource](IAsyncEnumerable
1 source, CancellationToken cancellationToken) in //Ix.NET/Source/System.Linq.Async/System/Linq/Operators/FirstOrDefault.cs:line 32at ExRam.Gremlinq.Core.GremlinQueryExtensions.FirstOrDefaultAsync[TElement](IGremlinQueryBase`1 query, CancellationToken ct) in ....\ExRam.Gremlinq\src\ExRam.Gremlinq.Core\Extensions\GremlinQueryExtensions.cs:line 21
Beta Was this translation helpful? Give feedback.
All reactions