Repository: nifi-minifi-cpp Updated Branches: refs/heads/master 07edfb162 -> 85a70fd75
MINIFICPP-438 Improved standards-compliance of JSON format to fix parsing issue This closes #290. Signed-off-by: Marc Parisi <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/repo Commit: http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/commit/7346f29c Tree: http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/tree/7346f29c Diff: http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/diff/7346f29c Branch: refs/heads/master Commit: 7346f29c62c4ac724d5ea273b92c4a4a40e051d0 Parents: 07edfb1 Author: Andrew I. Christianson <[email protected]> Authored: Wed Mar 21 17:08:36 2018 -0400 Committer: Marc Parisi <[email protected]> Committed: Fri Mar 23 07:42:13 2018 -0400 ---------------------------------------------------------------------- extensions/expression-language/Expression.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/7346f29c/extensions/expression-language/Expression.cpp ---------------------------------------------------------------------- diff --git a/extensions/expression-language/Expression.cpp b/extensions/expression-language/Expression.cpp index 2beba0b..5c6c6b9 100644 --- a/extensions/expression-language/Expression.cpp +++ b/extensions/expression-language/Expression.cpp @@ -187,13 +187,12 @@ Value expr_escapeJson(const std::vector<Value> &args) { Value expr_unescapeJson(const std::vector<Value> &args) { std::stringstream arg_0_ss; - arg_0_ss << "\"" << args[0].asString() << "\""; + arg_0_ss << "[\"" << args[0].asString() << "\"]"; rapidjson::Reader reader; - rapidjson::StringStream ss(arg_0_ss.str().c_str()); rapidjson::Document doc; - doc.ParseStream(ss); - if (doc.IsString()) { - return Value(std::string(doc.GetString())); + doc.Parse(arg_0_ss.str().c_str()); + if (doc.IsArray() && doc.Size() == 1 && doc[0].IsString()) { + return Value(std::string(doc[0].GetString())); } else { return Value(); }
