Numerical values are directly supported by either JSON or UBJSON specifications. A numerical value is typically unchanged when converting to the JData annotation. When storing as files, they are directly stored in the JSON/UBJSON numerical value forms. For example
Native data | text-JData/JSON form | binary-JData(UBJSON) | |
---|---|---|---|
a=3 | => | {"a":3} | [{][U][1][a][U][3][}] |
Similar for a floating point number
Native data | text-JData/JSON form | binary-JData(UBJSON) † | |
---|---|---|---|
a=3.14159 | => | {"a":3.14159} | [{][U][1][a][D][3.15169][}] |
There are a few special constants, namely "NaN", "Infinity" and "-Infinity"
Native data | text-JData/JSON form † | ||
---|---|---|---|
a=nan | => | {"a":"_NaN_"} | [{][U][1][a][D][nan][}] |
a=inf | => | {"a":"_Inf_"} | [{][U][1][a][D][inf][}] |
a=-inf | => | {"a":"-_Inf_"} | [{][U][1][D][-inf][}] |
Three special constants are directly supported by the JSON/UBJSON specifications, these constants are logical "True", logical "False" and "Null", they are stored as
Native data | text-JData/JSON form | binary-JData(UBJSON) | |
---|---|---|---|
a=true | => | {"a":true} | [{][U][1][a][T][}] |
a=false | => | {"a":false} | [{][U][1][a][F][}] |
a=null | => | {"a":null} | [{][U][1][a][N][}] |
Strings are natively supported in both JSON and UBJSON, therefore, when converting to the JData annotations, they are mostly unchanged. For JSON strings, several special constants must be escaped. For example
Native data | text-JData/JSON form † | binary-JData(UBJSON) | |
---|---|---|---|
a="JData will prevail" | => | {"a":"JData will prevail"} | [{][U][1][a][S][U][18][JData will prevail][}] |
a="Tabs\tNewlines\n" | => | {"a":"Tabs\tNewlines\n"} | [{][U][1][a][S][U][14][Tabs\tNewlines\n][}] |
a="中文UTF-8格式" | => | {"a":"中文UTF-8格式"} | [{][U][1][a][S][U][17][中文UTF-8格式][}] |