VertiGIS Reporting JSON data source fails when attribute values contain semi-colons
Hello, we are building a VertiGIS report that is generated via a VertiGIS workflow. The workflow converts a list of graphics to a JSON string and passes this to the report.
We found the report fails when the JSON data contains semi-colons in the attribute values. We fixed this by replacing the semi-colons with commas but we are concerned there could be other unsupported characters that could cause the report to fail.
Is there any documentation about the JSON data source format in VertiGIS Reporting? Semi-colons are supported in JSON so it looks to be a limitation on the report side.
-
An update: replacing the semi-colons with commas only fixed the report when previewing in the designer. The report still fails when the same JSON (with semi-colons replaced by commas) is sent via the workflow. I found the error below in the logs on the Reporting server.
{ "start": "2026-05-28T09:47:51.5209485Z", "end": "2026-05-28T09:47:51.5839458Z", "traces": [ "Information: 0: ReportEngine.LoadLayout took 42 ms", "Error: 0: Unexpected Error: DevExpress.XtraReports.DataRetrievalException: Error when trying to populate the datasource. The following exception was thrown: ", "Object reference not set to an instance of an object. ---> System.NullReferenceException: Object reference not set to an instance of an object.", " at DevExpress.DataAccess.Json.JsonDataSource.GetFillResult(String jsonString, String rootElement, String dataMember)", " at DevExpress.DataAccess.Json.JsonDataSource.DevExpress.Data.IListAdapter.FillList(IServiceProvider serviceProvider)", " at DevExpress.XtraReports.Native.ListAdapterFiller`1.ExecuteCore()", " at DevExpress.XtraReports.Native.DataSourceFiller.Execute()", " --- End of inner exception stack trace ---", " at DevExpress.XtraReports.Native.DataSourceFiller.Execute()", " at DevExpress.XtraReports.UI.XtraReportBase.FillDataSources(Boolean skipIfFilled)", " at DevExpress.XtraReports.UI.XtraReport.DevExpress.XtraReports.IReport.CreateDocumentCore(Single progressRange, Boolean buildForInstantPreview)", " at DevExpress.XtraReports.Native.DocumentCreator.Create(Single progressRange, Boolean buildForInstantPreview)", " at DevExpress.XtraReports.UI.XtraReport.CreateIfEmpty(Single progressRange, Boolean buildPagesInBackground)", " at DevExpress.XtraReports.UI.XtraReport.ExportToPdf(Stream stream, PdfExportOptions options)", " at Geocortex.Reporting.Engine.ReportEngine.TaskMain()", " at System.Threading.Tasks.Task.Execute()", "--- End of stack trace from previous location where exception was thrown ---", " at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()", " at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)", " at Geocortex.Reporting.Engine.ReportEngine.<RunAsync>d__73.MoveNext()", "--- End of stack trace from previous location where exception was thrown ---", " at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()", " at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)", " at Geocortex.Reporting.Foundation.ReportRunner.<RunAndProcessAsync>d__43.MoveNext()" ] }0 -
Here's the JSON used in the Report designer. When previewing in the report designer this works. When the workflow calls the report using the same JSON as data source the report fails with the above error.
The workflow creates the JSON by creating a list of graphics with only attributes and then creating a feature set from the list of graphics. It then uses the Convert to JSON tool to create a JSON version of the feature set.
{ "features": [ { "attributes": { "OBJECTID": 24464, "ACH_ACHIDENTIFIER": 1234, "ACH_IDTEXT": "ACH-00001234", "ACH_NAME": "Test Name", "ACH_BOUNDARYSTATUS": "Register", "ACH_ACHPLACETYPE": "Sample Type", "ACH_REGION": "Test Region", "ACH_CULTURALLYSENSITIVE": "No", "ACH_CULTURALLYSENSITIVENATURE": "None", "ACH_ISRESTRICTEDPLACE": "No", "ACH_BOUNDARYRELIABLE": "Yes", "KNOWLEDGE_HOLDERS": "Test", "ACH_Z_LEGACYNUMBER": "S01234", "last_edited_date": 1180706470000, "SHAPE.STArea()": 0.004278523712454734, "SHAPE.STLength()": 0.35296816563583183 } } ], "geometryType": null }0 -
This doesn't look like a parsing error to me. Also, you don't pass a data source to a report, a data source is a part of the report. You create a data source then pass parameters which allow the report to select a subset of data from that source. It looks like you may be able to use an ArcGIS Data Source. Try the intro documentation “Main Steps to Use Data in a Report”.
0 -
Hi Zack Robison thanks for replying. Apologies, I originally thought the issue was related to semi-colons but it appears to occur for other data as well, it looks related to the JSON format that the workflow is sending.
In my case, the report data is defined by the user in the viewer using complex queries that involve geometry intersects so I was assuming I needed to provide the dataset from the viewer and JSON looked like a good option. Quote from doc relating to JSON:
“…the client application running the report supplies the data, instead of a Reporting query. On the request to run the report, the client application must supply the source data as JSON.”
However, you've given me another idea - maybe I can supply a list of Object IDs and set up an ArcGIS data source query based on the Object IDs.
0
Vous devez vous connecter pour laisser un commentaire.
Commentaires
4 commentaires