Simplify Value.fromJSON API

Reviewed By: mhorowitz

Differential Revision: D5154478

fbshipit-source-id: 3f9528a6401d89df7e170d55da9c0327db5f4f3e
This commit is contained in:
Pieter De Baets 2017-06-06 03:04:56 -07:00 committed by Facebook Github Bot
parent 407b8b4d1f
commit 7081391c3d
4 changed files with 7 additions and 7 deletions

View File

@ -521,8 +521,7 @@ Value JSCExecutor::callFunctionSyncWithValue(
void JSCExecutor::setGlobalVariable(std::string propName, std::unique_ptr<const JSBigString> jsonValue) {
try {
SystraceSection s("JSCExecutor::setGlobalVariable", "propName", propName);
auto valueToInject = Value::fromJSON(m_context, adoptString(std::move(jsonValue)));
auto valueToInject = Value::fromJSON(adoptString(std::move(jsonValue)));
Object::getGlobalObject(m_context).setProperty(propName.c_str(), valueToInject);
} catch (...) {
std::throw_with_nested(std::runtime_error("Error setting global variable: " + propName));

View File

@ -36,7 +36,7 @@ TEST(Value, FromJSON) {
prepare();
JSGlobalContextRef ctx = JSC_JSGlobalContextCreateInGroup(false, nullptr, nullptr);
String s(ctx, "{\"a\": 4}");
Value v(Value::fromJSON(ctx, s));
Value v(Value::fromJSON(s));
EXPECT_TRUE(v.isObject());
JSC_JSGlobalContextRelease(ctx);
}
@ -45,7 +45,7 @@ TEST(Value, ToJSONString) {
prepare();
JSGlobalContextRef ctx = JSC_JSGlobalContextCreateInGroup(false, nullptr, nullptr);
String s(ctx, "{\"a\": 4}");
Value v(Value::fromJSON(ctx, s));
Value v(Value::fromJSON(s));
folly::dynamic dyn = folly::parseJson(v.toJSONString());
ASSERT_NE(nullptr, dyn);
EXPECT_TRUE(dyn.isObject());

View File

@ -38,7 +38,8 @@ std::string Value::toJSONString(unsigned indent) const {
}
/* static */
Value Value::fromJSON(JSContextRef ctx, const String& json) {
Value Value::fromJSON(const String& json) {
JSContextRef ctx = json.context();
auto result = JSC_JSValueMakeFromJSONString(ctx, json);
if (!result) {
throw JSException(folly::to<std::string>(
@ -66,7 +67,7 @@ Value Value::fromDynamic(JSContextRef ctx, const folly::dynamic& value) {
return Value(ctx, jsVal);
#else
auto json = folly::toJson(value);
return fromJSON(ctx, String(ctx, json.c_str()));
return fromJSON(String(ctx, json.c_str()));
#endif
}

View File

@ -330,7 +330,7 @@ public:
}
RN_EXPORT std::string toJSONString(unsigned indent = 0) const;
RN_EXPORT static Value fromJSON(JSContextRef ctx, const String& json);
RN_EXPORT static Value fromJSON(const String& json);
RN_EXPORT static Value fromDynamic(JSContextRef ctx, const folly::dynamic& value);
RN_EXPORT JSContextRef context() const;