Sie können JSON-Nachrichtendaten erstellen, die JSON-Objekte und/oder JSON-Arrays enthalten, indem Sie in der logischen Nachrichtenbaumstruktur unter dem Element Data, das zum JSON-Parserstammelement gehört, Elemente erstellen.
Eine JSON-Nachricht kann entweder über ein anonymes Objekt oder ein anonymes Array als Datenstammelement verfügen. Wenn Sie in der logischen Nachrichtenbaumstruktur ein JSON-Array erstellen, wird der JSON-Arrayname in einem Baumstrukturelement platziert, für das der JSON-Parserelementtyp JSON.Array festgelegt ist.
Die Einträge im JSON-Array werden als NameValue-Elemente in der logischen Baumstruktur platziert, als untergeordnete Elemente des Elements JSON.Array mit dem erforderlichen Wert. Die Namen dieser Array-Eintragselemente werden von der JSON-Serialisierungsmethode nicht verwendet, da JSON-Array-Einträge anonym sind. Verwenden Sie jedoch den Namen Item, wenn Sie Array-Eintragselemente definieren, damit die Konsistenz mit dem Namen, der vom JSON-Parser verwendet wird, gewahrt bleibt.
Das folgende Beispiel zeigt, wie eine JSON-Nachricht erstellt wird, die mit einem Objekt auf der Stammebene im Format { --- } formatiert ist.
{"Message":"Hello World"}
SET OutputRoot.JSON.Data.Message = 'Hello World';
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");
$output_message->{MB_JSON_PARSER_NAME}->{MB_JSON_DATA_ELEMENT_NAME}->Message = 'Hello World';
Message: ( ['json' : 0xc552990]
(0x01000000:Object ):Data = (
(0x03000000:NameValue):Message = 'Hello World' (CHARACTER)
)
Das folgende Beispiel zeigt, wie eine Nachricht erstellt wird, die mit einem Array auf der Stammebene im Format [ --- ] formatiert ist.
["valueA","valueB"]
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';
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");
$output_assembly->JSON->Data[] = array("valueA","valueB");
Weitere Informationen zu PHP-Arrays finden Sie im Abschnitt PHP-Arrays mit JSON verwenden.
Message: ( ['json' : 0xc552990]
(0x01001000:Array ):Data = (
(0x03000000:NameValue):Item = 'valueA' (CHARACTER)
(0x03000000:NameValue):Item = 'valueB' (CHARACTER)
)
Das folgende Beispiel zeigt, wie eine Nachricht erstellt wird, die mit einem Objektarray auf der Stammebene im Format [{--},{--},...] formatiert ist.
[{"Nam1":"val1","Num1":1},{"Nam2":"val2","Num2":2}]
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;
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)
)
)
)