1

我是 IIB 的新手,我正在努力在扩展 SQL 中创建以下 JSON 数据。请建议我。

{
    "name" : "John Doe",
    "age" : -1,
    "known" : false,
    "address" : { "street" : null, "city" : "unknown" },
    "belongings" : ["this", "that", "the other"]
}

我的 ESQL 代码:

DECLARE vm ROW;
    SET vm.Name[] = LIST{13,08,25,06};
    SET OutputRoot.JSON.Data.name = 'John Doe';
    SET OutputRoot.JSON.Data.age  =  1;
    SET OutputRoot.JSON.Data.known = false;
    SET OutputRoot.JSON.Data.address.street = null;
    SET OutputRoot.JSON.Data.address.city = 'Unknown';
    SET OutputRoot.JSON.Data.belongings = vm;

输出:

{
"name":"John Doe",
"age":1,
"known":false,
"address":{"city":"Unknown"},
"belongings":{"Name":13,"Name":8,"Name":25,"Name":6}
}
4

2 回答 2

1

这就是创建 JSON 数组的方法:

CREATE FIELD OutputRoot.JSON.Data.belongings IDENTITY(JSON.Array)belongings;
SET OutputRoot.JSON.Data.belongings.Item[1]=13;
SET OutputRoot.JSON.Data.belongings.Item[2]=8;
SET OutputRoot.JSON.Data.belongings.Item[3]=25;
SET OutputRoot.JSON.Data.belongings.Item[4]=6;
于 2019-03-09T17:10:31.207 回答
0

答案是正确的,但是如果您使用参考来优化代码的性能会更好:-

DECLARE vm ROW;
DECLARE refBelong OutputRoot;
SET vm.Name[] = LIST{13,08,25,06};
SET OutputRoot.JSON.Data.name = 'John Doe';
SET OutputRoot.JSON.Data.age  =  1;
SET OutputRoot.JSON.Data.known = false;
SET OutputRoot.JSON.Data.address.street = null;
SET OutputRoot.JSON.Data.address.city = 'Unknown';
-- Keeping the above code as is

-- Creating a new field for belongings
CREATE LASTCHILD OF OutputRoot.JSON.Data AS refBelong NAME 'belongings';
-- This makes the belonging field an Array
SET refBelong.TYPE = JSON.Array;
-- The Item field is required to assign the value to JSON Array type
SET refBelong.Item[1] = 'this';
SET refBelong.Item[1] = 'that';
SET refBelong.Item[1] = 'this other';
于 2022-01-25T16:53:55.700 回答