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();
   }

Reply via email to