建立 JSON 訊息
您可以透過在邏輯訊息樹狀結構中,在 JSON 剖析器根目錄所擁有的 Data 元素下建立元素,來建立包含 JSON 物件及/或 JSON 陣列的 JSON 訊息資料。
JSON 訊息可以使用匿名物件或匿名陣列作為資料的根。 無法使用 JSON 剖析器將 JSON 字串文字、數字、布林或空值作為資料的根。 當您在邏輯訊息樹狀結構中建立 JSON 陣列時, JSON 陣列名稱會放置在類型設為 JSON 剖析器元素類型 JSON.Array的樹狀結構元素中。
JSON 陣列中的項目會放置在邏輯樹狀結構中作為 NameValue 元素,作為 JSON.Array 元素的子項,並具有必要值。 JSON 序列化程式不會使用這些陣列項目元素的名稱,因為 JSON 陣列項目是匿名的。 不過,為了與 JSON 剖析器所使用的名稱一致,當您定義陣列項目元素時,請使用名稱 Item 。
建立 JSON 物件訊息
下列範例顯示如何建立 JSON 訊息,以根層次的物件來格式化,格式為 { --- }。
此範例顯示如何建立具有一個名稱/值配對的簡式 JSON 物件訊息:
{"Message":"Hello World"}下列 ESQL 程式碼可用來建立訊息:
SET OutputRoot.JSON.Data.Message = 'Hello World';下列 Java™ 程式碼也可以用來建立訊息:
MbElement outRoot =
outMessage.getRootElement();
MbElement outJsonRoot =
outRoot.createElementAsLastChild(MbJSON.PARSER_NAME);
MbElement outJsonData =
outJsonRoot.createElementAsLastChild(MbElement.TYPE_NAME, MbJSON.DATA_ELEMENT_NAME, null);
MbElement outJsonTest =
outJsonData.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "Message", "Hello World");建立 JSON 陣列訊息
下列範例顯示如何建立以根層次陣列格式化的訊息,格式為 [ --- ]。
此範例顯示如何建立 JSON 陣列訊息:
["valueA","valueB"]下列 ESQL 程式碼也可以用來建立陣列:
CREATE FIELD OutputRoot.JSON.Data IDENTITY (JSON.Array)Data;
CREATE LASTCHILD OF OutputRoot.JSON.Data TYPE NameValue NAME 'Item' VALUE 'valueA';
CREATE LASTCHILD OF OutputRoot.JSON.Data TYPE NameValue NAME 'Item' VALUE 'valueB';下列 Java 程式碼也可以用來建立陣列:
MbElement outJsonRoot =
outRoot.createElementAsLastChild("JSON");
MbElement outJsonData =
outJsonRoot.createElementAsLastChild(MbJSON.ARRAY, "Data", null);
outJsonData.createElementAsLastChild(MbElement.TYPE_NAME_VALUE,
"Item", "valueA");
outJsonData.createElementAsLastChild(MbElement.TYPE_NAME_VALUE,
"Item", "valueB");會以下列格式在整合節點邏輯訊息樹狀結構中建立訊息:
Message: ( ['json' : 0xc552990]
(0x01001000:Array ):Data = (
(0x03000000:NameValue):Item = 'valueA' (CHARACTER)
(0x03000000:NameValue):Item = 'valueB' (CHARACTER)
) 建立 JSON 物件陣列訊息
下列範例顯示如何建立以根層次物件陣列格式化的訊息,格式為 [{--},{--},...]。
此範例顯示如何建立 JSON 物件陣列訊息:
[{"Nam1":"val1","Num1":1},{"Nam2":"val2","Num2":2}]下列 ESQL 程式碼也可以用來建立陣列:
CREATE FIELD OutputRoot.JSON.Data IDENTITY(JSON.Array)Data;
SET OutputRoot.JSON.Data.Item[1].Nam1 = 'val1';
SET OutputRoot.JSON.Data.Item[1].Num1 = 1;
SET OutputRoot.JSON.Data.Item[2].Nam2 = 'val2';
SET OutputRoot.JSON.Data.Item[2].Num2 = 2;下列 Java 程式碼也可以用來建立陣列:
MbElement jsonData =
outMessage.getRootElement().createElementAsLastChild(MbJSON.PARSER_NAME).createElementAsLastChild
(MbJSON.ARRAY,MbJSON.DATA_ELEMENT_NAME, null);
MbElement jsonFirstArrayItem =
jsonData.createElementAsLastChild(MbElement.TYPE_NAME, MbJSON.ARRAY_ITEM_NAME, null);
jsonFirstArrayItem.createElementAsFirstChild(MbElement.TYPE_NAME_VALUE, "Nam1", "val1");
jsonFirstArrayItem.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "Num1", new Integer(1));
MbElement jsonSecondArrayItem =
jsonData.createElementAsLastChild(MbElement.TYPE_NAME, MbJSON.ARRAY_ITEM_NAME, null);
jsonSecondArrayItem.createElementAsFirstChild(MbElement.TYPE_NAME_VALUE, "Nam2", "val2");
jsonSecondArrayItem.createElementAsLastChild(MbElement.TYPE_NAME_VALUE, "Num2", new Integer(2));會以下列格式在整合節點邏輯訊息樹狀結構中建立訊息:
Message: ( ['json' : 0xc673900]
(0x01001000:Array):Data = (
(0x01000000:Object):Item = (
(0x03000000:NameValue):nam1 = 'val1' (CHARACTER)
(0x03000000:NameValue):num1 = 1 (INTEGER)
)(0x01000000:Object):Item = (
(0x03000000:NameValue):nam2 = 'val2' (CHARACTER)
(0x03000000:NameValue):num2 = 2 (INTEGER)
)
)
)