JSON data parsing: values arrays, row parsing, field scanning.
Handles parsing of Vega-Lite data objects including row-oriented JSON arrays with mixed numeric/string column types.
Find column index by field name
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | key | |||
| character(len=64), | intent(in) | :: | field_names(:) | |||
| integer, | intent(in) | :: | ncols |
Parse data object: {"values": [{...}, ...]}
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | json | |||
| integer, | intent(inout) | :: | pos | |||
| type(data_t), | intent(out) | :: | d | |||
| integer, | intent(out) | :: | status |
Parse row-oriented data: [{"x":1,"y":2}, ...] Two-pass: first count rows and discover columns, then parse values.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | json | |||
| integer, | intent(inout) | :: | pos | |||
| type(data_t), | intent(out) | :: | d | |||
| integer, | intent(out) | :: | status |
Scan one row object to discover field names and types. Advances pos past the entire row object.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | json | |||
| integer, | intent(inout) | :: | pos | |||
| character(len=64), | intent(inout) | :: | field_names(:) | |||
| logical, | intent(inout) | :: | field_is_string(:) | |||
| integer, | intent(inout) | :: | nfields | |||
| integer, | intent(out) | :: | status |
Parse one row object and store values into data columns
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | json | |||
| integer, | intent(inout) | :: | pos | |||
| type(data_t), | intent(inout) | :: | d | |||
| integer, | intent(in) | :: | row | |||
| character(len=64), | intent(in) | :: | field_names(:) | |||
| integer, | intent(in) | :: | ncols | |||
| integer, | intent(out) | :: | status |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | json | |||
| integer, | intent(inout) | :: | pos | |||
| type(field_plot_t), | intent(out) | :: | field | |||
| integer, | intent(out) | :: | status |
Parse layer array
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | json | |||
| integer, | intent(inout) | :: | pos | |||
| type(spec_t), | intent(inout) | :: | spec | |||
| integer, | intent(out) | :: | status |
Parse a single layer object
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| character(len=*), | intent(in) | :: | json | |||
| integer, | intent(inout) | :: | pos | |||
| type(layer_t), | intent(out) | :: | lay | |||
| integer, | intent(out) | :: | status |