Associazione dello schema C e C++ a JSON
Il programma di utilità DFHLS2JS supporta le associazioni tra i tipi di dati C e C + + e le definizioni di schema JSON.
I nomi C e C++ vengono convertiti in nomi JSON in base alle seguenti regole:
- I caratteri non validi nei nomi delle proprietà JSON vengono sostituiti con '
X'.Ad esempio,
monthly-totalviene convertito inmonthlyXtotal. - I nomi duplicati vengono resi univoci aggiungendo una o più cifre
numeriche.
Ad esempio, due istanze di
yearvengono convertite inyeareyear1.
DFHLS2JS associa i tipi di dati C e C + + agli elementi dello schema in base alla seguente tabella. I tipi C e C++ non visualizzati nella tabella non sono supportati da DFHLS2JS. Il qualificatore
_Packed è supportato per le strutture. Sono valide le seguenti limitazioni:- I file di intestazione devono contenere un'istanza
structdi livello superiore. - Non è possibile dichiarare un tipo di struttura che contiene se stessa come membro.
- I seguenti tipi di dati C e C++ non sono supportati:
decimallong doublewchar_t(solo C++)
- Quanto segue viene ignorato se sono presenti nel file di intestazione.
- Indicatori classe di storage:
autoregisterstaticexternmutable
- Qualificatori
constvolatile_Export(solo C++)
- Indicatori di funzione
inline(solo C++)virtual(solo C++)
- Valori iniziali
- Il file di intestazione non deve contenere i seguenti elementi:
- Unioni
- Dichiarazioni di classe
- Tipi di dati di enumerazione
- Variabili di tipo Pointer
- Dichiarazioni di template
- Macro predefinite, ossia macro con nomi che iniziano e terminano con due caratteri di sottolineatura (
__) - Sequenza di continuazione della riga (un simbolo \ seguito immediatamente da un carattere di nuova riga)
- Dichiaratori di funzione prototipo
- Direttive preprocessore
- Campi bit
- Parola chiave
__cdecl(o_cdecl)(solo C++)
- Il programmatore dell'applicazione deve utilizzare un compilatore a 32-bit per
accertarsi che un
intvenga associato a 4 byte. - Le seguenti parole chiave C++ riservate non sono supportate:
explicitusingnamespacetypenametypeid
- Se il parametro MAPPING-LEVEL è impostato su 1.2 o superiore e il parametro CHAR-VARYING è impostato su NULL, gli array di caratteri vengono associati a un
stringe vengono elaborati come stringhe con terminazione null. - Se il parametro MAPPING-LEVEL è impostato su 1.2 o su
un valore più elevato ed il parametro CHAR-VARYING è
impostato su BINARY, gli array di caratteri vengono associati a
xsd:base64Binaryed elaborati come dati binari. - Se il parametro MAPPING-LEVEL è impostato su
1.2 o su un valore più alto ed il parametro
CHAR-VARYING è impostato su
COLLAPSE,
<xsd:whiteSpace value="collapse"/>viene generato per le stringhe.
| Tipo di dati C e C++ | simpleType schema |
|---|---|
char[
z
]
|
|
char16_t[
n
]
|
A livello di associazione 4.0 e successivo:
Al runtime, CICS® popola il campo della struttura dati dell'applicazione con i dati UTF-16 . |
char[8]Supportato al livello di associazione 3.0 e superiore quando |
Il formato della data/ora è definito da RFC3339. |
charshortintlonglong long |
dove n è il valore massimo che può essere rappresentato dalla primitiva. |
unsigned charunsigned shortunsigned intunsigned longunsigned long long |
dove n è il valore massimo che può essere rappresentato dalla primitiva. |
(solo C++) |
|
Supportato a livello di associazione 1.2 e
successivo. |
Nota: la rappresentazione dei dati HFP (Esadecimal Floating Point) di IBM® non è esattamente uguale alla rappresentazione IEEE-754-1985 utilizzata per JSON. Alcuni valori potrebbero non essere convertiti esattamente da una rappresentazione all'altra. Alcuni valori estremamente grandi o piccoli potrebbero non essere validi per i tipi di dati mobili. Alcuni valori possono perdere precisione quando vengono convertiti in o dalla rappresentazione HFP. Se è importante utilizzare conversioni precise, prendere in considerazione la sostituzione dei dati
float con alternative a precisione fissa.
|
Supportato a livello di associazione 1.2 e
successivo. |
Nota: la rappresentazione dei dati IBM HFP (Esadecimal Floating Point) non è esattamente la stessa della rappresentazione IEEE-754-1985 utilizzata per JSON. Alcuni valori potrebbero non essere convertiti esattamente da una rappresentazione all'altra. Alcuni valori estremamente grandi o piccoli potrebbero non essere validi per i tipi di dati double. Alcuni valori possono perdere precisione quando vengono convertiti in o dalla rappresentazione HFP. Se è importante utilizzare conversioni precise, prendere in considerazione la sostituzione dei tipi di dati
double con alternative a precisione fissa.
|
| nome tipo [ n ] | Per le primitive:Per le strutture:Dove type JSON è la rappresentazione dello schema JSON del tipo C o C + +. |