%JSON
快速參考
%JSON
本節提供本章中讨論的
%JSON
方法、屬性和參數的快速參考。
%JSON.Adaptor
方法
%JSON.Adaptor
這些方法提供了從
JSON
序列化和序列化到
JSON
的能力。
%JSONExport()
%JSON.Adaptor.%JSONExport()
将啟用
JSON
的類序列化為JSON文檔,并将其寫入目前裝置。
method %JSONExport(%mappingName As %String = "") as %Status
複制
-
(可選)-要用于導出的映射的名稱。基本映射由"" 表示,并且是預設映射。%mappingName
%JSONExportToStream()
%JSON.Adaptor.%JSONExportToStream()
将啟用`JSON的類序列化為JSON文檔并将其寫入流。
method %JSONExportToStream(ByRef export As %Stream.Object,
%mappingName As %String = "") as %Status
複制
-
- 包含序列化的JSON文檔的導出流。export
-
(可選)-要用于導出的映射的名稱。基本映射由%mappingName
表示,并且是預設映射。""
%JSONExportToString()
%JSON.Adaptor.%JSONExportToString()
将啟用JSON的類序列化為JSON文檔,并将其作為字元串傳回。
method %JSONExportToString(ByRef %export As %String,
%mappingName As %String = "") as %Status
複制
-
-包含序列化的JSON文檔的字元串。Export
-
可選)-要用于導出的映射的名稱。基本映射由%mappingName
表示,并且是預設映射。""
%JSONImport()
%JSON.Adaptor.%JSONImport()
将JSON或動态實體輸入導入此對象。
method %JSONImport(input, %mappingName As %String = "") as %Status
複制
-
-JSON可以是字元串或流,也可以是input
的子類。%DynamicAbstractObject
-
(可選)-要用于導入的映射的名稱。基本映射由%mappingName
表示,并且是預設映射。""
%JSONNew()
%JSON.Adaptor.%JSONNew()
擷取啟用JSON的類的執行個體。在傳回此類的執行個體之前,可以重寫此方法以執行自定義處理(如初始化對象執行個體)。但是,不應直接從使用者代碼調用此方法。
classmethod %JSONNew(dynamicObject As %DynamicObject,
containerOref As %RegisteredObject = "") as %RegisteredObject
複制
-
-具有要配置設定給新對象的值的動态實體。dynamicObject
-
(可選)-從containerOref
調用時的包含對象執行個體。%JSONImport()
%JSON.Adaptor類和屬性參數
除非另有說明,否則可以為類或單個屬性指定參數。作為類參數,它指定相應屬性參數的預設值。作為屬性參數,它指定覆寫預設值的值。
%JSONENABLED
啟用屬性轉換方法的生成。
parameter %JSONENABLED = 1;
複制
- 1-(預設)将生成JSON啟用方法。
- 0-方法生成器不會生成Runnable方法。
%JSONFIELDNAME (properties only)
設定要用作JSON内容中字段名的字元串。
parameter %JSONFIELDNAME
複制
預設情況下,使用屬性名稱。
%JSONIGNOREINVALIDFIELD
控制對JSON輸入中意外字段的處理。
parameter %JSONIGNOREINVALIDFIELD = 0;
複制
- 0-(預設值)将意外字段視為錯誤。
- 1-意外字段将被忽略。
%JSONIGNORENULL
指定如何存儲字元串屬性的空字元串。此參數僅适用于真字元串(由
XSDTYPE = "string"
和
JSONTYPE="string"
确定)。
parameter %JSONIGNORENULL = 0;
複制
- 0-(預設)JSON輸入中的空字元串存儲為
,$char(0)
作為字元串$char(0)
寫入JSON。JSON輸入中缺少的字段始終存儲為""
,并且根據""
參數,%JSONNULL
始終輸出到JSON。""
- 1-空字元串和缺少的JSON字段都作為
輸入,而""
和""
都作為字段值$char(0)
輸出。""
%JSONINCLUDE (properties only)
指定此屬性是否包含在JSON輸出或輸入中。
parameter %JSONINCLUDE = "inout"
複制
-
(預設)-在輸入和輸出中都包含。"inout"
-
-忽略該屬性作為輸入。"outputonly"
-
-忽略該屬性作為輸出。"inputOnly"
-
—從不包含該屬性。“none”
%JSONNULL
控制未指定屬性的處理。
parameter %JSONNULL = 0;
複制
- 0 -(預設)在導出期間跳過與未指定屬性對應的字段。
- 1 -未指定的屬性作為空值導出。
%JSONREFERENCE
指定如何将對象引用投影到JSON字段。
parameter %JSONREFERENCE = "OBJECT";
複制
-
-(預設)被引用類的屬性用來表示被引用的對象。"OBJECT"
-
-持久或串行類的“ID”
用于表示引用。ID
-
——持久類或串行類的“OID”
用于表示引用。OID
以oid
,classname
id
的形式投射到JSON中。
-
-持久化類的GUID用來表示引用。"GUID"
%JSON.ForMatter方法和屬性
%JSON.ForMatter
類可用于格式化
%DynamicAbstractObject
子類的JSON字元串、流或對象。
Format()
%JSON.Formatter.Format()
使用指定的縮進格式化JSON文檔并将其寫入目前裝置。
method Format(input) as %Status
複制
-
-JSON可以是字元串或流,也可以是input
的子類。%DynamicAbstractObject
FormatToStream()
%JSON.Formatter.FormatToStream()
使用指定的縮進格式化JSON文檔并将其寫入流。
method FormatToStream(input, ByRef export As %Stream.Object) as %Status
複制
-
-JSON可以是字元串或流,也可以是input
的子類。%DynamicAbstractObject
-
-格式化的JSON流。export
FormatToString()
%JSON.Formatter.FormatToString()
使用指定的縮進格式化JSON文檔并将其寫入字元串,或将啟用JSON的類序列化為JSON文檔并将其作為字元串傳回。
method FormatToString(input, ByRef export As %String = "") as %Status
複制
-
-JSON可以是字元串或流,也可以是input
的子類。%DynamicAbstractObject
-
(可選)-格式化的JSON流。export
Indent
%JSON.Formatter.Indent
屬性指定是否應縮進JSON輸出。預設為true。
property Indent as %Boolean [ InitialExpression = 1 ];
複制
IndentChars
%JSON.Formatter.IndentChars
屬性指定在啟用縮進時用于每個縮進級别的字元序列。預設為一個空格。
property IndentChars as %String [ InitialExpression = " " ];
複制
LineTerminator
%JSON.Formatter.LineTerminator
屬性指定縮進時終止每行的字元序列。預設為
$char(13,10)
。
property LineTerminator as %String [ InitialExpression = $char(13,10) ];
複制
/// d ##class(PHA.TEST.Xml).Obj2FormatterJson()
ClassMethod Obj2FormatterJson()
{
s event = ##class(Model.Event).%New()
s event.Name = "yx"
s location = ##class(Model.Location).%New()
s location.City = "tianjin"
s location.Country = "china"
s event.Location = location
d event.%JSONExportToString(.jsonEvent)
s formatter = ##class(%JSON.Formatter).%New()
s formatter.Indent = 1
s formatter.IndentChars = " - "
//s formatter.LineTerminator = "!"
d formatter.Format(jsonEvent)
}
複制
DHC-APP>d ##class(PHA.TEST.Xml).Obj2FormatterJson()
{
- "Name":"yx",
- "Location":{
- - "City":"tianjin",
- - "Country":"china"
- }
}
DHC-APP>d ##class(PHA.TEST.Xml).Obj2FormatterJson()
{! - "Name":"yx",! - "Location":{! - - "City":"tianjin",! - - "Country":"china"! - }!}
複制