This is an expected behavior that is explained at the end of Accessing JSON Data. You can apply JsonSimpleValueParseMode.Strict to skip parsing of string values as shown in the following snippet:
JsonDataLoadOptions options = new JsonDataLoadOptions();
options.SimpleValueParseMode = JsonSimpleValueParseMode.Strict;
JsonDataSource dataSource = new JsonDataSource(..., options);
Also, I have noticed that you use serialization of a custom object into JSON before passing to LINQ Reporting Engine. Please note that this is not necessary and you can pass an instance of a custom type directly to the engine as shown, for instance, at Hello World Example.
For XmlDataSource, XML schema can be used to specify data types through one of XmlDataSource’s constructors.
If XML schema is not present and automatic recognition of data types does not fit your scenario, a DataSet instance loaded from XML (see DataSet.ReadXml) could be passed to LINQ Reporting Engine alternatively.