IBM Streams中的JSON to Tuple操作

时间:2018-02-18 07:04:35

标签: infosphere-spl ibm-infosphere ibm-streams

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

如何在Custom运算符中将JSON转换为Tuple?

1 个答案:

答案 0 :(得分:1)

版本1.4+的JSON工具包包含可以从自定义调用的函数。 此版本必须从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的回购中找到。

希望这有帮助。