有没有办法在不使用JSONtoTuple运算符的情况下将JSON字符串转换为SPL元组类型? 我看到了这个文档: https://developer.ibm.com/streamsdev/docs/introducing-the-json-toolkit/ 他们提到了将元组转换为json而不是json转换为元组的本机函数。
如何在Custom运算符中将JSON转换为Tuple?
答案 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的回购中找到。
希望这有帮助。