天天看點

Caché JSON %JSON快速參考%JSON快速參考

%JSON

快速參考

本節提供本章中讨論的

%JSON

方法、屬性和參數的快速參考。

%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           

複制

  • export

    - 包含序列化的JSON文檔的導出流。
  • %mappingName

    (可選)-要用于導出的映射的名稱。基本映射由

    ""

    表示,并且是預設映射。

%JSONExportToString()

%JSON.Adaptor.%JSONExportToString()

将啟用JSON的類序列化為JSON文檔,并将其作為字元串傳回。

method %JSONExportToString(ByRef %export As %String, 
      %mappingName As %String = "") as %Status           

複制

  • Export

    -包含序列化的JSON文檔的字元串。
  • %mappingName

    可選)-要用于導出的映射的名稱。基本映射由

    ""

    表示,并且是預設映射。

%JSONImport()

%JSON.Adaptor.%JSONImport()

将JSON或動态實體輸入導入此對象。

method %JSONImport(input, %mappingName As %String = "") as %Status           

複制

  • input

    -JSON可以是字元串或流,也可以是

    %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           

複制

  • input

    -JSON可以是字元串或流,也可以是

    %DynamicAbstractObject

    的子類。

FormatToStream()

%JSON.Formatter.FormatToStream()

使用指定的縮進格式化JSON文檔并将其寫入流。

method FormatToStream(input, ByRef export As %Stream.Object) as %Status           

複制

  • input

    -JSON可以是字元串或流,也可以是

    %DynamicAbstractObject

    的子類。
  • export

    -格式化的JSON流。

FormatToString()

%JSON.Formatter.FormatToString()

使用指定的縮進格式化JSON文檔并将其寫入字元串,或将啟用JSON的類序列化為JSON文檔并将其作為字元串傳回。

method FormatToString(input, ByRef export As %String = "") as %Status           

複制

  • input

    -JSON可以是字元串或流,也可以是

    %DynamicAbstractObject

    的子類。
  • export

    (可選)-格式化的JSON流。

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"! - }!}           

複制