JSON 到 IBM Streams 中的元组操作

JSON to Tuple operation in IBM Streams

有没有办法在不使用 JSONtoTuple 运算符的情况下将 JSON 字符串转换为 SPL 元组类型? 我看到了这个文档: https://developer.ibm.com/streamsdev/docs/introducing-the-json-toolkit/ 他们提到了将元组转换为 json 而不是 json 为元组的本机函数。

如何在自定义运算符中将 JSON 转换为元组?

JSON 工具包的 1.4+ 版本包括您可以从自定义调用的函数。 此版本必须从 Github 下载,因为它尚未包含在 Streams 产品中。

下载 latest version from Github,即 1.4.4。 构建工具包:cd com.ibm.streamsx.json 和 运行 ant.

然后就可以使用extractJSON函数了:

public T extractFromJSON(rstring jsonString, T value)

传递要解析的 JSON 字符串,以及将包含解析结果作为参数的可变元组。

例如:

composite ExtractFromJSON {
type

 //the target output type. Nested JSON arrays are not supported.
    Nested_t = tuple<rstring name, int32 age, list<rstring> relatives> person, tuple<rstring street, rstring city> address;


graph
    () as Test = Custom() {
        logic
            onProcess : {
                rstring jsonString = '{"person" : {"name" : "John", "age" : 42, "relatives" : ["Jane","Mike"]}, "address" : {"street" : "Allen Street", "city" : "New York City"}}';

                mutable Nested_t nestedTuple = {};
                println( extractFromJSON(jsonString, nestedTuple));
            }
    }
}

这是基于ExtractFromJSON sample 你可以在 Github.

的 repo 中找到

希望对您有所帮助。