DCMTK: DcmJsonFormat Class Reference

DCMTK Version 3.6.9 OFFIS DICOM Toolkit

Loading...
Searching...
No Matches
Classes | Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Protected Member Functions | Private Attributes | List of all members
DcmJsonFormat Class Referenceabstract

Class for handling JSON format options. More...

Inheritance diagram for DcmJsonFormat:

## Classes
class | Indention
| A class to create small proxy objects that ease indention handling. More...

## Public Types
enum | NumStringPolicy { NSP_auto , NSP_always_number , NSP_always_string }
| an enumeration defining how to convert IS/DS elements to JSON More...

## Public Member Functions
| DcmJsonFormat (const OFBool printMetaInfo)
| Constructor.
virtual | ~DcmJsonFormat ()
| Virtual destructor, does nothing.
virtual OFString | newline ()=0
| Method to return line break(s)
virtual OFString | space ()=0
| Method to return whitespace(s)
Indention | indent ()
| Method to return an indention proxy object for increasing, decreasing or printing indention.
virtual OFBool | asBulkDataURI (const DcmTagKey &tag, OFString &uri)
| Check if an attribute should be exported as BulkDataURI.
virtual void | printValuePrefix (STD_NAMESPACE ostream &out)
| Print the Prefix which for JSON Values needed with indention and newlines as in the format Variable given.
virtual void | printValueSuffix (STD_NAMESPACE ostream &out)
| Print the Suffix which for JSON Values needed with indention and newlines as in the format Variable given.
virtual void | printBulkDataURIPrefix (STD_NAMESPACE ostream &out)
| Print the Prefix which for JSON BulkDataURI needed with indention and newlines as in the format Variable given.
virtual void | printInlineBinaryPrefix (STD_NAMESPACE ostream &out)
| Print the Prefix which for JSON InlineBinary needed with indention and newlines as the format specifies.
virtual void | printNextArrayElementPrefix (STD_NAMESPACE ostream &out)
| Print the prefix for array elements (except the first one), with indention and newlines as the format specifies.
virtual OFBool | getJsonExtensionEnabled () const
| return the flag indicating whether extended JSON number encoding is enabled.
virtual void | setJsonExtensionEnabled (OFBool enabled)
| set the flag indicating whether extended JSON number encoding is enabled.
virtual NumStringPolicy | getJsonNumStringPolicy () const
| return the flag defining how IS/DS elements should be converted to JSON.
virtual void | setJsonNumStringPolicy (NumStringPolicy policy)
| set the flag defining how IS/DS elements should be converted to JSON.

## Static Public Member Functions
static void | escapeControlCharacters (STD_NAMESPACE ostream &out, OFString const &value)
| Escapes all forbidden control characters in JSON.
static void | normalizeDecimalString (OFString &value)
| Normalize Decimal String to specific JSON format.
static void | normalizeIntegerString (OFString &value)
| Normalize Integer String to specific JSON format.
static void | printString (STD_NAMESPACE ostream &out, const OFString &value)
| Prints either null if empty or the string value (with all illegal characters escaped).
static void | printValueString (STD_NAMESPACE ostream &out, const OFString &value)
| Prints either null if empty or a quoted string (with leading and ending quotation marks and all illegal characters escaped).
static void | printNumberInteger (STD_NAMESPACE ostream &out, OFString &value)
| Print either null if empty or a Number as normalized IntegerString.
static void | printNumberDecimal (STD_NAMESPACE ostream &out, OFString &value)
| Print either null if empty or a Number as normalized IntegerDecimal.

## Public Attributes
const OFBool | printMetaheaderInformation
| Option that defines if metaheader information should be printed.

## Protected Member Functions
virtual void | printIndention (STD_NAMESPACE ostream &out)=0
| Indent to the specific level.
virtual void | increaseIndention ()=0
| Used for increasing the indention level.
virtual void | decreaseIndention ()=0
| Used for decreasing the indention level.

## Private Attributes
OFBool | enableJsonExtension
| Option that defines if the inofficial JSON extension should be permitted under which decimal numbers may have the values "-inf", "inf" or "nan".
NumStringPolicy | numStringPolicy
| Option that defines how IS/DS elements will be converted to JSON, as number or string.

## Detailed Description

Class for handling JSON format options.

Base class to implement custom formatting. Purpose:

- individual output formatting
- normalization of DecimalString and IntegerString e.g. normalization of leading zeros
- escaping of special JSON control characters
- outputting the correct indention and symbols for "Value", "BulkDataURI", etc.

### Usage Example:

#include "dcmtk/dcmdata/dcjson.h"
// ...
DcmFileFormat fileformat;
if(fileformat.loadFile("test.dcm").good())
{
// print the DICOM file in JSON format
// using the pretty format (muti-line with indention and other whitespace)
fileformat.writeJson(COUT, DcmJsonFormatPretty(OFTrue));
// using the compact (single line, without unneeded whitespace) format
fileformat.writeJson(COUT, DcmJsonFormatCompact(OFTrue));
}
DcmFileFormat
a class handling the DICOM file format (with meta header)
Definition dcfilefo.h:44
DcmFileFormat::writeJson
virtual OFCondition writeJson(STD_NAMESPACE ostream &out, DcmJsonFormat &format)
write object in JSON format.
DcmFileFormat::loadFile
virtual OFCondition loadFile(const OFFilename &fileName, const E_TransferSyntax readXfer=EXS_Unknown, const E_GrpLenEncoding groupLength=EGL_noChange, const Uint32 maxReadLength=DCM_MaxReadLength, const E_FileReadMode readMode=ERM_autoDetect)
load object from a DICOM file.
DcmJsonFormatCompact
Subclass for handling JSON formatted output.
Definition dcjson.h:444
DcmJsonFormatPretty
Subclass for handling JSON formatted output.
Definition dcjson.h:404
OFCondition::good
OFBool good() const
check if the status is OK.
Definition ofcond.h:312

### Implementing a custom formatter:

struct CustomJsonFormat : DcmJsonFormatPretty
{
CustomJsonFormat(const OFBool printMetaInfo = OFTrue)
: DcmJsonFormatPretty(printMetaInfo)
{
}
OFString OFJsonFormatExample::space()
{
// use tabstops instead of spaces for indention
return "\t";
}
}
OFString
a simple string class that implements a subset of std::string.
Definition ofstring.h:76

## Member Enumeration Documentation

## ◆ NumStringPolicy

enum DcmJsonFormat::NumStringPolicy

an enumeration defining how to convert IS/DS elements to JSON

Enumerator
NSP_auto | write as number if possible (i.e. the value is a valid JSON number), as string otherwise.
NSP_always_number | always write as JSON number, fail with an error code if the value is not a valid JSON number
NSP_always_string | always write as JSON string

## Constructor & Destructor Documentation

## ◆ DcmJsonFormat()

DcmJsonFormat::DcmJsonFormat | ( | const OFBool | printMetaInfo | ) |
| inline

Constructor.

Parameters

  printMetaInfo | parameter that defines if meta information should be written

References enableJsonExtension, NSP_auto, numStringPolicy, and printMetaheaderInformation.

## Member Function Documentation

## ◆ asBulkDataURI()

virtual OFBool DcmJsonFormat::asBulkDataURI | ( | const DcmTagKey & | tag,
|  | OFString & | uri )
| virtual

Check if an attribute should be exported as BulkDataURI.

Override this function to implement bulk data URI output.

Parameters

  tag | the tag of the attribute being printed, for letting the implementation decide how to handle it.
  uri | the resulting URI to output.

Returns
  OFTrue if yes, OFFalse if no.

### Usage Example:

struct BulkDataURIJsonFormat : DcmJsonFormatPretty
{
CustomJsonFormat(const OFBool printMetaInfo = OFTrue,
... bulkDataURIDatabase)
: DcmJsonFormatPretty(printMetaInfo)
, TheDatabase(bulkDataURIDatabase)
{
}
virtual OFBool asBulkDataURI(const DcmTagKey& tag, OFString& uri)
{
... result = TheDatabase.findBulkDataFor(tag);
if (result.found())
{
uri = result.uri();
return OFTrue;
}
return OFFalse;
}
... TheDatabase;
}
DcmJsonFormat::asBulkDataURI
virtual OFBool asBulkDataURI(const DcmTagKey &tag, OFString &uri)
Check if an attribute should be exported as BulkDataURI.
DcmTagKey
class maintaining a attribute tag (group and element number)
Definition dctagkey.h:42

## ◆ escapeControlCharacters()

static void DcmJsonFormat::escapeControlCharacters | ( | STD_NAMESPACE ostream & | out,
|  | OFString const & | value )
| static

Escapes all forbidden control characters in JSON.

Parameters

  out | output stream to which the escaped String is written
  value | String that should be escaped

## ◆ indent()

Indention DcmJsonFormat::indent | ( |  | ) |
| inline

Method to return an indention proxy object for increasing, decreasing or printing indention.

Returns
  an indention proxy object.

## ◆ newline()

virtual OFString DcmJsonFormat::newline | ( |  | ) |
| pure virtual

Method to return line break(s)

Returns
  line break(s).

Implemented in DcmJsonFormatCompact, and DcmJsonFormatPretty.

## ◆ normalizeDecimalString()

static void DcmJsonFormat::normalizeDecimalString | ( | OFString & | value | ) |
| static

Normalize Decimal String to specific JSON format.

remove leading zeros, except before dot. Example:

00.123 --> 0.123
023.12 --> 23.12
-01.00 --> -1.00
0200 --> 200
.12 --> 0.12
000.1 --> 0.1

Parameters

  value | String that should be normalize

## ◆ normalizeIntegerString()

static void DcmJsonFormat::normalizeIntegerString | ( | OFString & | value | ) |
| static

Normalize Integer String to specific JSON format.

remove leading zeros, except before dot. Example:

000 --> 0
023 --> 23
-01 --> -1
0200 --> 200

Parameters

  value | String that should be normalize

## ◆ printBulkDataURIPrefix()

virtual void DcmJsonFormat::printBulkDataURIPrefix | ( | STD_NAMESPACE ostream & | out | ) |
| virtual

Print the Prefix which for JSON BulkDataURI needed with indention and newlines as in the format Variable given.

Example:

,"BulkDataURI":

Parameters

  out | output stream to which the Value prefix is written

## ◆ printIndention()

virtual void DcmJsonFormat::printIndention | ( | STD_NAMESPACE ostream & | out | ) |
| protectedpure virtual

Indent to the specific level.

Parameters

  out | output stream to which the indention is written.

Implemented in DcmJsonFormatCompact, and DcmJsonFormatPretty.

## ◆ printInlineBinaryPrefix()

virtual void DcmJsonFormat::printInlineBinaryPrefix | ( | STD_NAMESPACE ostream & | out | ) |
| virtual

Print the Prefix which for JSON InlineBinary needed with indention and newlines as the format specifies.

Example:

,"InlineBinary":

Parameters

  out | output stream to which the Value prefix is written

## ◆ printNextArrayElementPrefix()

virtual void DcmJsonFormat::printNextArrayElementPrefix | ( | STD_NAMESPACE ostream & | out | ) |
| virtual

Print the prefix for array elements (except the first one), with indention and newlines as the format specifies.

Example:

Example,\n
Example...

Parameters

  out | output stream to which the Value prefix is written

## ◆ printNumberDecimal()

static void DcmJsonFormat::printNumberDecimal | ( | STD_NAMESPACE ostream & | out,
|  | OFString & | value )
| static

Print either null if empty or a Number as normalized IntegerDecimal.

Parameters

  out | output stream to which the Value prefix is written
  value | String that should be printed

## ◆ printNumberInteger()

static void DcmJsonFormat::printNumberInteger | ( | STD_NAMESPACE ostream & | out,
|  | OFString & | value )
| static

Print either null if empty or a Number as normalized IntegerString.

Parameters

  out | output stream to which the Value prefix is written
  value | String that should be printed

## ◆ printString()

static void DcmJsonFormat::printString | ( | STD_NAMESPACE ostream & | out,
|  | const OFString & | value )
| static

Prints either null if empty or the string value (with all illegal characters escaped).

Parameters

  out | output stream to which the Value prefix is written
  value | String that should be printed

## ◆ printValuePrefix()

virtual void DcmJsonFormat::printValuePrefix | ( | STD_NAMESPACE ostream & | out | ) |
| virtual

Print the Prefix which for JSON Values needed with indention and newlines as in the format Variable given.

Example:

,"Value":[

Parameters

  out | output stream to which the Value prefix is written

## ◆ printValueString()

static void DcmJsonFormat::printValueString | ( | STD_NAMESPACE ostream & | out,
|  | const OFString & | value )
| static

Prints either null if empty or a quoted string (with leading and ending quotation marks and all illegal characters escaped).

Parameters

  out | output stream to which the Value prefix is written
  value | String that should be printed

## ◆ printValueSuffix()

virtual void DcmJsonFormat::printValueSuffix | ( | STD_NAMESPACE ostream & | out | ) |
| virtual

Print the Suffix which for JSON Values needed with indention and newlines as in the format Variable given.

Example:

]\n

Parameters

  out | output stream to which the Value prefix is written

## ◆ setJsonExtensionEnabled()

virtual void DcmJsonFormat::setJsonExtensionEnabled | ( | OFBool | enabled | ) |
| inlinevirtual

set the flag indicating whether extended JSON number encoding is enabled.

Parameters

  enabled | new value of the flag

References enableJsonExtension.

## ◆ setJsonNumStringPolicy()

virtual void DcmJsonFormat::setJsonNumStringPolicy | ( | NumStringPolicy | policy | ) |
| inlinevirtual

set the flag defining how IS/DS elements should be converted to JSON.

Parameters

  policy | new value of the flag

References numStringPolicy.

## ◆ space()

virtual OFString DcmJsonFormat::space | ( |  | ) |
| pure virtual

Method to return whitespace(s)

Returns
  whitespace(s).

Implemented in DcmJsonFormatCompact, and DcmJsonFormatPretty.

## Member Data Documentation

## ◆ enableJsonExtension

OFBool DcmJsonFormat::enableJsonExtension
| private

Option that defines if the inofficial JSON extension should be permitted under which decimal numbers may have the values "-inf", "inf" or "nan".

Default is OFFalse, in which case such values will lead to an error code being returned instead.

Referenced by DcmJsonFormat(), getJsonExtensionEnabled(), and setJsonExtensionEnabled().

## ◆ numStringPolicy

NumStringPolicy DcmJsonFormat::numStringPolicy
| private

Option that defines how IS/DS elements will be converted to JSON, as number or string.

Default is NSP_auto.

Referenced by DcmJsonFormat(), getJsonNumStringPolicy(), and setJsonNumStringPolicy().

The documentation for this class was generated from the following file:

- dcmdata/include/dcmtk/dcmdata/dcjson.h

Generated on Sat Mar 1 2025 for DCMTK Version 3.6.9 by Doxygen 1.13.2