DCMTK Version 3.6.8
OFFIS DICOM Toolkit
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. More...
 
virtual ~DcmJsonFormat ()
 Virtual destructor, does nothing.
 
virtual OFString newline ()=0
 Method to return line break(s) More...
 
virtual OFString space ()=0
 Method to return whitespace(s) More...
 
Indention indent ()
 Method to return an indention proxy object for increasing, decreasing or printing indention. More...
 
virtual OFBool asBulkDataURI (const DcmTagKey &tag, OFString &uri)
 Check if an attribute should be exported as BulkDataURI. More...
 
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. More...
 
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. More...
 
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. More...
 
virtual void printInlineBinaryPrefix (STD_NAMESPACE ostream &out)
 Print the Prefix which for JSON InlineBinary needed with indention and newlines as the format specifies. More...
 
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. More...
 
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. More...
 
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. More...
 

Static Public Member Functions

static void escapeControlCharacters (STD_NAMESPACE ostream &out, OFString const &value)
 Escapes all forbidden control characters in JSON. More...
 
static void normalizeDecimalString (OFString &value)
 Normalize Decimal String to specific JSON format. More...
 
static void normalizeIntegerString (OFString &value)
 Normalize Integer String to specific JSON format. More...
 
static void printString (STD_NAMESPACE ostream &out, const OFString &value)
 Prints either null if empty or the string value (with all illegal characters escaped). More...
 
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). More...
 
static void printNumberInteger (STD_NAMESPACE ostream &out, OFString &value)
 Print either null if empty or a Number as normalized IntegerString. More...
 
static void printNumberDecimal (STD_NAMESPACE ostream &out, OFString &value)
 Print either null if empty or a Number as normalized IntegerDecimal. More...
 

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. More...
 
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". More...
 
NumStringPolicy numStringPolicy
 Option that defines how IS/DS elements will be converted to JSON, as number or string. More...
 

Detailed Description

Class for handling JSON format options.

Base class to implement custom formatting. Purpose:

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));
}
a class handling the DICOM file format (with meta header)
Definition: dcfilefo.h:44
virtual OFCondition writeJson(STD_NAMESPACE ostream &out, DcmJsonFormat &format)
write object in JSON format.
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.
Subclass for handling JSON formatted output.
Definition: dcjson.h:444
Subclass for handling JSON formatted output.
Definition: dcjson.h:404
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";
}
}
a simple string class that implements a subset of std::string.
Definition: ofstring.h:76

Member Enumeration Documentation

◆ 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
printMetaInfoparameter that defines if meta information should be written

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
tagthe tag of the attribute being printed, for letting the implementation decide how to handle it.
urithe 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;
}
virtual OFBool asBulkDataURI(const DcmTagKey &tag, OFString &uri)
Check if an attribute should be exported as BulkDataURI.
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
outoutput stream to which the escaped String is written
valueString 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 DcmJsonFormatPretty, and DcmJsonFormatCompact.

◆ 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
valueString 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
valueString 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
outoutput 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
outoutput stream to which the indention is written.

Implemented in DcmJsonFormatPretty, and DcmJsonFormatCompact.

◆ 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
outoutput 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
outoutput 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
outoutput stream to which the Value prefix is written
valueString 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
outoutput stream to which the Value prefix is written
valueString 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
outoutput stream to which the Value prefix is written
valueString 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
outoutput 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
outoutput stream to which the Value prefix is written
valueString 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
outoutput 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
enablednew 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
policynew value of the flag

References numStringPolicy.

◆ space()

virtual OFString DcmJsonFormat::space ( )
pure virtual

Method to return whitespace(s)

Returns
whitespace(s).

Implemented in DcmJsonFormatPretty, and DcmJsonFormatCompact.

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 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 getJsonNumStringPolicy(), and setJsonNumStringPolicy().


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


Generated on Tue Dec 19 2023 for DCMTK Version 3.6.8 by Doxygen 1.9.4