[Groonga-commit] nroonga/nroonga at b341d60 [master] Fix to parse json with addon

Back to archive index

abetomo null+****@clear*****
Thu Sep 21 15:51:02 JST 2017


abetomo	2017-09-21 15:51:02 +0900 (Thu, 21 Sep 2017)

  New Revision: b341d600a5190872e9cb1b3c3c0ce979a8fd75dd
  https://github.com/nroonga/nroonga/commit/b341d600a5190872e9cb1b3c3c0ce979a8fd75dd

  Merged 5a6fc95: Merge pull request #28 from abetomo/fix_to_parse_json_with_addon

  Message:
    Fix to parse json with addon

  Modified files:
    src/nroonga.cc

  Modified: src/nroonga.cc (+30 -2)
===================================================================
--- src/nroonga.cc    2017-09-21 14:19:18 +0900 (1575a65)
+++ src/nroonga.cc    2017-09-21 15:51:02 +0900 (763f552)
@@ -117,7 +117,21 @@ void Database::CommandAfter(uv_work_t* req) {
     argv[1] = Nan::Null();
   } else {
     argv[0] = Nan::Null();
-    argv[1] = Nan::New(baton->result, baton->result_length).ToLocalChecked();
+
+    v8::Local<v8::String> string = Nan::New(
+        baton->result, baton->result_length).ToLocalChecked();
+    Nan::TryCatch tc;
+    Nan::JSON NanJSON;
+    Nan::MaybeLocal<v8::Value> parse_value = NanJSON.Parse(string);
+    if (tc.HasCaught()) {
+      argv[1] = string;
+    } else {
+      if (parse_value.IsEmpty()) {
+        argv[1] = string;
+      } else {
+        argv[1] = parse_value.ToLocalChecked();
+      }
+    }
   }
   Nan::MakeCallback(Nan::GetCurrentContext()->Global(),
                     Nan::New<v8::Function>(baton->callback),
@@ -198,7 +212,21 @@ void Database::CommandSyncString(
     return;
   }
 
-  info.GetReturnValue().Set(Nan::New(result, result_length).ToLocalChecked());
+
+  v8::Local<v8::String> string = Nan::New(result,
+                                          result_length).ToLocalChecked();
+  Nan::TryCatch tc;
+  Nan::JSON NanJSON;
+  Nan::MaybeLocal<v8::Value> parse_value = NanJSON.Parse(string);
+  if (tc.HasCaught()) {
+    info.GetReturnValue().Set(string);
+    return;
+  }
+  if (parse_value.IsEmpty()) {
+    info.GetReturnValue().Set(string);
+    return;
+  }
+  info.GetReturnValue().Set(parse_value.ToLocalChecked());
 }
 
 void InitNroonga(v8::Local<v8::Object> exports) {
-------------- next part --------------
HTML����������������������������...
URL: https://lists.osdn.me/mailman/archives/groonga-commit/attachments/20170921/de2c5a3e/attachment-0001.htm 



More information about the Groonga-commit mailing list
Back to archive index