Skip to content

Add JSON as a native exchange format #51

@rogerfraser

Description

@rogerfraser

Add JSON as a native exchange format

Motivated by a general requirement for a more flexible import/export file format for exchanging station, measurement and adjustment output information, this issue will replace issue 3, issue 19 and issue 22, and track the development of new functionality to exchange information using JSON and/or its variants (BSON, UBJSON, GeoJSON, etc.).

Assumptions for selecting JSON

The broad assumptions for selecting JSON are follows:

  • Good representation of structured data
  • Relatively light weight, more compact and less verbose (compared to XML)
  • Supported by a variety of event driven (SAX-like) parsers, allowing for efficient parsing of extremely large files
  • Supported by a variety of open source and commercial GIS (e.g. QGIS, ArcGIS/Map) and DBMS (e.g. PostgreSQL, Oracle)
  • Offers support for echanging data via RESTful APIs and API-based services oriented architectures
  • Permits the use of schemas and integrity checking
  • Relatively simple to build translators between JSON and other formats
  • Supports human readable and binary options

C++ JSON support

Various open source C++ libraries for JSON I/O exist. A comprehensive summary of the available C++ JSON projects on GitHub, including C++ language support, memory requirements and performance benchmarking, can be found here.

Next steps

  • Develop schemas for structuring standard input (station, measurement, geoid) and output (adjusted measurements and coordinates, uncertainties, statistics, corrections) information
  • Identify any other specific collections of information
  • Identify a suitable open-source C/C++ library, preferably from GitHub
  • Develop and test
  • Document

Metadata

Metadata

Assignees

No one assigned

    Labels

    feature newRequest a new feature or function

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions