Skip to content

Error when record class has an object type property #84

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
saulgaray0131 opened this issue Apr 5, 2025 · 4 comments
Open

Error when record class has an object type property #84

saulgaray0131 opened this issue Apr 5, 2025 · 4 comments
Assignees
Labels
bug Something isn't working

Comments

@saulgaray0131
Copy link

Not able to have an object property in a record class.

Tested using the test server project by adding an object type property to Person class.

public class Person : MagicTableTool<Person>, IMagicTable<DbSets>
{
   /// Add this
    public object Payload { get; set; } = new { Property = "test" };
}

Error:

Error handling streamed JS: SyntaxError: Expected ',' or '}' after property value in JSON at position 334 (line 1 column 335)
    at JSON.parse (<anonymous>)
    at magicDbMethods.3z1shsk3oa.js:77:59
    at Array.map (<anonymous>)
    at Module.streamedJsHandler (magicDbMethods.3z1shsk3oa.js:77:41)
---------------------------------------------------------------------------------------------------------
[2025-04-05T20:47:51.125Z] Error: System.Text.Json.JsonException: The JSON value could not be converted to System.Boolean. Path: $ | LineNumber: 0 | BytePositionInLine: 1.
 ---> System.InvalidOperationException: Cannot get the value of a token type 'StartObject' as a boolean.
   at System.Text.Json.ThrowHelper.ThrowInvalidOperationException_ExpectedBoolean(JsonTokenType tokenType)
   at System.Text.Json.Utf8JsonReader.GetBoolean()
   at System.Text.Json.Serialization.JsonConverter`1.TryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value, Boolean& isPopulatedValue)
   at System.Text.Json.Serialization.JsonConverter`1.ReadCore(Utf8JsonReader& reader, T& value, JsonSerializerOptions options, ReadStack& state)
   --- End of inner exception stack trace ---
   at System.Text.Json.ThrowHelper.ReThrowWithPath(ReadStack& state, Utf8JsonReader& reader, Exception ex)
   at System.Text.Json.Serialization.JsonConverter`1.ReadCore(Utf8JsonReader& reader, T& value, JsonSerializerOptions options, ReadStack& state)
   at System.Text.Json.Serialization.Metadata.JsonTypeInfo`1.Deserialize(Utf8JsonReader& reader, ReadStack& state)
   at System.Text.Json.Serialization.Metadata.JsonTypeInfo`1.DeserializeAsObject(Utf8JsonReader& reader, ReadStack& state)
   at System.Text.Json.JsonSerializer.ReadAsObject(Utf8JsonReader& reader, JsonTypeInfo jsonTypeInfo)
   at Magic.IndexedDb.Models.MagicContractResolver`1.ReadSimpleType(Utf8JsonReader& reader, Type type) in C:\VSTS\magiccodingman\Magic.IndexedDb\Magic.IndexedDb\Models\MagicContractResolver.cs:line 217
   at Magic.IndexedDb.Models.MagicContractResolver`1.Read(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options) in C:\VSTS\magiccodingman\Magic.IndexedDb\Magic.IndexedDb\Models\MagicContractResolver.cs:line 25
   at System.Text.Json.Serialization.JsonConverter`1.TryRead(Utf8JsonReader& reader, Type typeToConvert, JsonSerializerOptions options, ReadStack& state, T& value, Boolean& isPopulatedValue)
   at System.Text.Json.Serialization.JsonConverter`1.ReadCore(Utf8JsonReader& reader, T& value, JsonSerializerOptions options, ReadStack& state)
   at System.Text.Json.Serialization.Metadata.JsonTypeInfo`1.Deserialize(Utf8JsonReader& reader, ReadStack& state)
   at System.Text.Json.JsonSerializer.ReadFromSpan[TValue](ReadOnlySpan`1 utf8Json, JsonTypeInfo`1 jsonTypeInfo, Nullable`1 actualByteCount)
   at System.Text.Json.JsonSerializer.ReadFromSpan[TValue](ReadOnlySpan`1 json, JsonTypeInfo`1 jsonTypeInfo)
   at System.Text.Json.JsonSerializer.Deserialize[TValue](String json, JsonSerializerOptions options)
   at Magic.IndexedDb.Helpers.MagicSerializationHelper.DeserializeObject[T](String json, MagicJsonSerializationSettings settings) in C:\VSTS\magiccodingman\Magic.IndexedDb\Magic.IndexedDb\Helpers\MagicSerializationHelper.cs:line 83
   at Magic.IndexedDb.Extensions.MagicJsInvoke.TrueMagicStreamJsAsync[T](String modulePath, String functionName, CancellationToken token, Boolean isVoid, ITypedArgument[] args) in C:\VSTS\magiccodingman\Magic.IndexedDb\Magic.IndexedDb\Extensions\MagicJsInvoke.cs:line 141
   at Magic.IndexedDb.Extensions.MagicJsInvoke.TrueMagicStreamJsAsync[T](String modulePath, String functionName, CancellationToken token, Boolean isVoid, ITypedArgument[] args) in C:\VSTS\magiccodingman\Magic.IndexedDb\Magic.IndexedDb\Extensions\MagicJsInvoke.cs:line 141
   at Magic.IndexedDb.Extensions.MagicJsInvoke.MagicVoidStreamJsAsync(String modulePath, String functionName, CancellationToken token, ITypedArgument[] args) in C:\VSTS\magiccodingman\Magic.IndexedDb\Magic.IndexedDb\Extensions\MagicJsInvoke.cs:line 248
   at Magic.IndexedDb.Extensions.MagicJsInvoke.CallJsAsync(String modulePath, String functionName, CancellationToken token, ITypedArgument[] args) in C:\VSTS\magiccodingman\Magic.IndexedDb\Magic.IndexedDb\Extensions\MagicJsInvoke.cs:line 28
   at Magic.IndexedDb.MagicQuery`1.AddRangeAsync(IEnumerable`1 records, CancellationToken cancellationToken) in C:\VSTS\magiccodingman\Magic.IndexedDb\Magic.IndexedDb\LinqTranslation\Models\MagicQuery.cs:line 146
   at TestServer.Components.Pages.Home.OnAfterRenderAsync(Boolean firstRender) in C:\VSTS\magiccodingman\Magic.IndexedDb\TestServer\TestServer\Components\Pages\Home.razor:line 255
   at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task taskToHandle, ComponentState owningComponentState)
@yueyinqiu
Copy link
Collaborator

yueyinqiu commented Apr 6, 2025

The response from js layer is {"error":"Unexpected error in JS."}


Actual error in js layer:

Error handling streamed JS: SyntaxError: Expected ',' or '}' after property value in JSON at position 319 (line 1 column 320)
    at JSON.parse (<anonymous>)
    at magicDbMethods.3z1shsk3oa.js:77:59
    at Array.map (<anonymous>)
    at Module.streamedJsHandler (magicDbMethods.3z1shsk3oa.js:77:41)

Value received in js layer:

'[{"Databases":{},"TestIntStable":1,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":1,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Zack","Age":45,"TestInt":9,"DateOfBirth":null,"guid":"571c1b36-f7be-403d-b65d-7938e91f8811","Secret":null,"Payload":"testPrivate":false,"Access":1},{"Databases":{},"TestIntStable":2,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":2,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Luna","Age":35,"TestInt":9,"DateOfBirth":"1981-04-06T00:00:00.0000000","guid":"c4ba80c8-1b34-45e9-ac27-886dd03af9dd","Secret":null,"Payload":"testPrivate":false,"Access":3},{"Databases":{},"TestIntStable":3,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":3,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Jerry","Age":35,"TestInt":9,"DateOfBirth":"1995-04-06T00:00:00.0000000","guid":"db7b0bca-0f70-41e2-b654-8b97b43b9b22","Secret":null,"Payload":"testPrivate":false,"Access":11},{"Databases":{},"TestIntStable":4,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":4,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Jamie","Age":35,"TestInt":9,"DateOfBirth":"2001-04-06T00:00:00.0000000","guid":"77a7469f-c890-45ae-b3a8-20e95704fb86","Secret":null,"Payload":"testPrivate":false,"Access":11},{"Databases":{},"TestIntStable":5,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":5,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"James","Age":35,"TestInt":9,"DateOfBirth":"1990-04-06T00:00:00.0000000","guid":"1d499f33-8228-4bf0-9eb1-8d58ff658f4e","Secret":null,"Payload":"testPrivate":false,"Access":11},{"Databases":{},"TestIntStable":6,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":6,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Jack","Age":35,"TestInt":9,"DateOfBirth":"2009-04-06T00:00:00.0000000","guid":"e8415b1d-7563-4adc-8883-1b8deea098bd","Secret":null,"Payload":"testPrivate":false,"Access":11},{"Databases":{},"TestIntStable":7,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":7,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Jon","Age":37,"TestInt":9,"DateOfBirth":"2008-04-06T00:00:00.0000000","guid":"460129c0-182f-4b7f-8409-150a730a8599","Secret":null,"Payload":"testPrivate":false,"Access":1},{"Databases":{},"TestIntStable":8,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":8,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Jack","Age":37,"TestInt":9,"DateOfBirth":"1992-04-06T00:00:00.0000000","guid":"65bd1c0e-ddd9-4d2c-a433-9be4641e8f9f","Secret":null,"Payload":"testPrivate":false,"Access":3},{"Databases":{},"TestIntStable":9,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":9,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Cathy","Age":22,"TestInt":9,"DateOfBirth":"2016-04-06T00:00:00.0000000","guid":"709c9bb3-cb47-4bfe-a6fa-5dd5a49367db","Secret":null,"Payload":"testPrivate":false,"Access":3},{"Databases":{},"TestIntStable":10,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":10,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Bob","Age":69,"TestInt":3,"DateOfBirth":"2007-04-06T00:00:00.0000000","guid":"5d36f143-ced5-48c1-b90a-68b2dbb56cf5","Secret":null,"Payload":"testPrivate":false,"Access":1},{"Databases":{},"TestIntStable":11,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":11,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Alex","Age":80,"TestInt":3,"DateOfBirth":null,"guid":"5c24a1ff-a334-4fd4-ac45-0fc9a05bc79b","Secret":null,"Payload":"testPrivate":false,"Access":0},{"Databases":{},"TestIntStable":12,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":12,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Zapoo","Age":45,"TestInt":9,"DateOfBirth":null,"guid":"9f27cb64-848f-45a7-8cd3-5af0c1f3b6d1","Secret":null,"Payload":"testPrivate":false,"Access":1},{"Databases":{},"TestIntStable":13,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":13,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Sarah","Age":30,"TestInt":-1,"DateOfBirth":null,"guid":"57e5f24e-2397-41d0-9dc7-7ea5e017e0ac","Secret":null,"Payload":"testPrivate":false,"Access":1},{"Databases":{},"TestIntStable":14,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":14,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Michael","Age":50,"TestInt":15,"DateOfBirth":null,"guid":"7eb75d35-2dac-4933-a8fb-36da04aeea3e","Secret":null,"Payload":"testPrivate":false,"Access":3},{"Databases":{},"TestIntStable":15,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":15,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Tommy","Age":12,"TestInt":7,"DateOfBirth":null,"guid":"d3c476fa-5591-4110-9dfa-9221c33a5ee1","Secret":null,"Payload":"testPrivate":false,"Access":0},{"Databases":{},"TestIntStable":16,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":16,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Grace","Age":90,"TestInt":3,"DateOfBirth":null,"guid":"9a87c1d7-a724-4720-9982-abb6af4fe130","Secret":null,"Payload":"testPrivate":false,"Access":0},{"Databases":{},"TestIntStable":17,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":17,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Xylophone","Age":27,"TestInt":9,"DateOfBirth":null,"guid":"4cb65475-fdf6-42e0-b4a5-ee81c9dd9fdd","Secret":null,"Payload":"testPrivate":false,"Access":0},{"Databases":{},"TestIntStable":18,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":18,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Yasmine","Age":40,"TestInt":9,"DateOfBirth":null,"guid":"678f0bbc-b140-4d56-a833-4cef96fc7977","Secret":null,"Payload":"testPrivate":false,"Access":0},{"Databases":{},"TestIntStable":19,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":19,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Alicia","Age":16,"TestInt":42,"DateOfBirth":null,"guid":"7eec007c-8956-4fb6-8284-7884528e25bc","Secret":null,"Payload":"testPrivate":false,"Access":0},{"Databases":{},"TestIntStable":20,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":20,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Ben","Age":25,"TestInt":0,"DateOfBirth":null,"guid":"eeca8c48-3758-4952-9e9a-6fe2a761d69b","Secret":null,"Payload":"testPrivate":false,"Access":0},{"Databases":{},"TestIntStable":21,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":21,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Clara","Age":65,"TestInt":100,"DateOfBirth":null,"guid":"1c49002c-1845-4902-bb2f-6e5c1f4b8e67","Secret":null,"Payload":"testPrivate":false,"Access":3},{"Databases":{},"TestIntStable":22,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":22,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Danny","Age":40,"TestInt":9,"DateOfBirth":null,"guid":"0795cc2c-11e4-4fbb-a0b5-dc14959e3949","Secret":null,"Payload":"testPrivate":false,"Access":0},{"Databases":{},"TestIntStable":23,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":23,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Elliot","Age":55,"TestInt":-20,"DateOfBirth":null,"guid":"5f01e0d9-3db8-4666-a33b-9b24a7fc922a","Secret":null,"Payload":"testPrivate":false,"Access":0},{"Databases":{},"TestIntStable":24,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":24,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Fiona","Age":33,"TestInt":11,"DateOfBirth":null,"guid":"2ea958bd-0978-4b47-b5cc-651ec2f7e9b6","Secret":null,"Payload":"testPrivate":false,"Access":0},{"Databases":{},"TestIntStable":25,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":25,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"George","Age":72,"TestInt":8,"DateOfBirth":null,"guid":"07ef7400-e7ef-48ad-ace4-bf68eb725d45","Secret":null,"Payload":"testPrivate":false,"Access":11},{"Databases":{},"TestIntStable":26,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":26,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Henry","Age":29,"TestInt":99,"DateOfBirth":null,"guid":"6844e4d9-4547-4f85-81cf-c4f30f94cce1","Secret":null,"Payload":"testPrivate":false,"Access":0},{"Databases":{},"TestIntStable":27,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":27,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Isla","Age":18,"TestInt":2,"DateOfBirth":null,"guid":"e4c3f2ad-1d1a-4962-bac8-05b86e4a0070","Secret":null,"Payload":"testPrivate":false,"Access":0},{"Databases":{},"TestIntStable":28,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":28,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Jackie","Age":60,"TestInt":75,"DateOfBirth":null,"guid":"4d85e706-92e0-44e0-a6d7-0852f13f3e8d","Secret":null,"Payload":"testPrivate":false,"Access":0},{"Databases":{},"TestIntStable":29,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":29,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Kevin","Age":48,"TestInt":5,"DateOfBirth":null,"guid":"3ced74e2-efb3-47ba-8a21-9e173fc25074","Secret":null,"Payload":"testPrivate":false,"Access":0},{"Databases":{},"TestIntStable":30,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":30,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Liam","Age":55,"TestInt":9,"DateOfBirth":null,"guid":"e214b8f6-6487-430d-b3b3-404388ece90e","Secret":null,"Payload":"testPrivate":false,"Access":0},{"Databases":{},"TestIntStable":31,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":31,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Mona","Age":35,"TestInt":88,"DateOfBirth":null,"guid":"0d486524-a575-4bce-a595-674af24a929b","Secret":null,"Payload":"testPrivate":false,"Access":3},{"Databases":{},"TestIntStable":32,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":32,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Nathan","Age":27,"TestInt":7,"DateOfBirth":null,"guid":"2ad08969-a770-4d1f-a7be-669a49bb90ae","Secret":null,"Payload":"testPrivate":false,"Access":0},{"Databases":{},"TestIntStable":33,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":33,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Olivia","Age":45,"TestInt":13,"DateOfBirth":null,"guid":"b71dca16-d6d5-4aee-aafc-9243ac1075bd","Secret":null,"Payload":"testPrivate":false,"Access":0},{"Databases":{},"TestIntStable":34,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":34,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Patrick","Age":52,"TestInt":3,"DateOfBirth":null,"guid":"126663ef-54df-4e58-bc42-ef5f6c410e72","Secret":null,"Payload":"testPrivate":false,"Access":0},{"Databases":{},"TestIntStable":35,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":35,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Quinn","Age":42,"TestInt":22,"DateOfBirth":null,"guid":"caee619d-1ca5-4c29-8a1a-96642b1942a0","Secret":null,"Payload":"testPrivate":false,"Access":0},{"Databases":{},"TestIntStable":36,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":36,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Rachel","Age":36,"TestInt":77,"DateOfBirth":null,"guid":"3d83d15a-ebb4-4cab-ab35-0a32e99822af","Secret":null,"Payload":"testPrivate":false,"Access":0},{"Databases":{},"TestIntStable":37,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":37,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Steve","Age":38,"TestInt":9,"DateOfBirth":null,"guid":"d15b40f1-8820-4f31-a687-3f04897b1844","Secret":null,"Payload":"testPrivate":false,"Access":0},{"Databases":{},"TestIntStable":38,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":38,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Tina","Age":68,"TestInt":3,"DateOfBirth":null,"guid":"470c5c68-609c-4eab-8c69-b10f7e20f206","Secret":null,"Payload":"testPrivate":false,"Access":0},{"Databases":{},"TestIntStable":39,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":39,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Uma","Age":39,"TestInt":14,"DateOfBirth":null,"guid":"7992f019-032d-4824-88fc-b3848e4af315","Secret":null,"Payload":"testPrivate":false,"Access":0},{"Databases":{},"TestIntStable":40,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":40,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Victor","Age":31,"TestInt":6,"DateOfBirth":null,"guid":"20651a41-4a8b-470e-a8b1-1248e98c43bc","Secret":null,"Payload":"testPrivate":false,"Access":0},{"Databases":{},"TestIntStable":41,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":41,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Wendy","Age":50,"TestInt":50,"DateOfBirth":null,"guid":"bae68174-da91-4b71-bdf9-b46ba7577942","Secret":null,"Payload":"testPrivate":false,"Access":0},{"Databases":{},"TestIntStable":42,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":42,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Xander","Age":21,"TestInt":19,"DateOfBirth":null,"guid":"a669f5f2-7518-4860-a1f8-3291b2acbb8a","Secret":null,"Payload":"testPrivate":false,"Access":0},{"Databases":{},"TestIntStable":43,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":43,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Yara","Age":32,"TestInt":90,"DateOfBirth":null,"guid":"b790e231-8e52-4158-aff4-164e808dc68a","Secret":null,"Payload":"testPrivate":false,"Access":0},{"Databases":{},"TestIntStable":44,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":44,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Zane","Age":47,"TestInt":101,"DateOfBirth":"2020-02-10T00:00:00.0000000","guid":"5907c3ae-332f-4c2f-b0ea-3eb0e2ede91e","Secret":null,"Payload":"testPrivate":false,"Access":0}]'

Looks like Payload is not correctly serialized in csharp layer:

    ..., 
    "Secret":null,
    "Payload":
    "testPrivate":false,
    ...

@magiccodingman
Copy link
Owner

I'm looking into it.

@magiccodingman
Copy link
Owner

Okay I replicated the issue, and it's incredibly odd. I'm not string editing the JSON serialization, but here's the JSON that was passed to the universal translation layer:

'[{"Databases":{},"TestIntStable":1,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":1,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Zack","Age":45,"TestInt":9,"DateOfBirth":null,"guid":"c9779e79-98e5-436a-b04e-ccab71673a93","Secret":null,"Payload":"testPrivate":false,"Access":1},{"Databases":{},"TestIntStable":2,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":2,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000…estInt":90,"DateOfBirth":null,"guid":"3fac8aa9-95fb-4ed1-aded-8c23332e63ca","Secret":null,"Payload":"testPrivate":false,"Access":0},{"Databases":{},"TestIntStable":44,"TestIntStable2":10,"Nested":{"value":"abc"},"_id":44,"guid1":"00000000-0000-0000-0000-000000000000","guid2":"00000000-0000-0000-0000-000000000000","Name":"Zane","Age":47,"TestInt":101,"DateOfBirth":"2020-02-10T00:00:00.0000000","guid":"a3e2801f-7949-4c6b-9b01-551720e5d1a2","Secret":null,"Payload":"testPrivate":false,"Access":0}]'

And what came in was, "Payload":"testPrivate":false when it should have been "Payload": {"testPrivate": false}.

Very very odd. Obviously it's the custom built serializer, but it's still utilizing System.Json.Text so this is weird. But since I know where this has to be originating from, I can resolve this.

@magiccodingman
Copy link
Owner

@saulgaray0131 Just know I haven't forgotten! I've just been really busy with dumb adult responsibilities this week. Taxes, business, resolving the worlds problems quietly behind the scenes. The normal! But, I did get pretty far into resolving this. It comes down to how my serializer handles simple types. I didn't want to do reflection based property digestion on every aspect of the serializer as that's incredibly heavy.

But the issue is that the object property is declared under my system as simple. There was various reasons for that, but the TLDR. My system utilizes reference types as an observation of simple versus complex types before being shoved into the serialization process to communicate with the universal translation layer/protocol.

Therefore, I have to add an exception to the rule. An object property must be inspected prior to any serialization. Because I can't assume it's either complex or simple.

This is why it's serializing an object as if it was simple, which is why the syntax is broken. It can handle a strictly typed nested class, but a dynamically created object throws the serializer off. This is a recognized bug that will be resolved. It's not a hard thing to resolve, just tedious as I need to change various layers on how I handle this.

TLDR: I need to make sure I inspect the property with runtime reflections of any provided object type to validate if it is a simple or complex property.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants