kou commented on code in PR #46696:
URL: https://github.com/apache/arrow/pull/46696#discussion_r2124975825


##########
cpp/src/arrow/json/from_string.cc:
##########
@@ -1030,13 +1029,13 @@ Status DictArrayFromJSONString(const 
std::shared_ptr<DataType>& type,
                         ArrayFromJSONString(dictionary_type.index_type(), 
indices_json));
   ARROW_ASSIGN_OR_RAISE(auto dictionary, 
ArrayFromJSONString(dictionary_type.value_type(),
                                                              dictionary_json));
-
-  return DictionaryArray::FromArrays(type, std::move(indices), 
std::move(dictionary))
-      .Value(out);
+  ARROW_ASSIGN_OR_RAISE(auto out, DictionaryArray::FromArrays(type, 
std::move(indices),
+                                                              
std::move(dictionary)));
+  return out;

Review Comment:
   Cam we simplify this?
   
   ```suggestion
     return DictionaryArray::FromArrays(type, std::move(indices), 
std::move(dictionary)));
   ```



##########
cpp/src/arrow/json/from_string.h:
##########
@@ -68,52 +68,45 @@ Result<std::shared_ptr<Array>> ArrayFromJSONString(const 
std::shared_ptr<DataTyp
 /// \brief Create a ChunkedArray from a JSON string
 ///
 /// \code {.cpp}
-/// std::shared_ptr<ChunkedArray> chunked_array;
-/// ChunkedArrayFromJSONString(
-///   int64(), {R"([5, 10])", R"([null])", R"([16])"}, &chunked_array
-/// );
+/// std::shared_ptr<ChunkedArray> chunked_array =
+///     ChunkedArrayFromJSONString(int64(), {R"([5, 10])", R"([null])", 
R"([16])"})
+///         .ValueOrDie();
 /// \endcode
 ARROW_EXPORT
-Status ChunkedArrayFromJSONString(const std::shared_ptr<DataType>& type,
-                                  const std::vector<std::string>& json_strings,
-                                  std::shared_ptr<ChunkedArray>* out);
+Result<std::shared_ptr<ChunkedArray>> ChunkedArrayFromJSONString(
+    const std::shared_ptr<DataType>& type, const std::vector<std::string>& 
json_strings);
 
 /// \brief Create a DictionaryArray from a JSON string
 ///
 /// \code {.cpp}
-/// std::shared_ptr<Array> array;
-/// DictArrayFromJSONString(
-///   dictionary(int32(), utf8()),
-///   "[0, 1, 0, 2, 0, 3]", R"(["k1", "k2", "k3", "k4"])",
-///   &array
-/// );
+/// std::shared_ptr<Array> dict_array =
+///     DictArrayFromJSONString(dictionary(int32(), utf8()), "[0, 1, 0, 2, 0, 
3]",
+///     R"(["k1", "k2", "k3", "k4"])");
 /// \endcode
 ARROW_EXPORT
-Status DictArrayFromJSONString(const std::shared_ptr<DataType>&,
-                               std::string_view indices_json,
-                               std::string_view dictionary_json,
-                               std::shared_ptr<Array>* out);
+Result<std::shared_ptr<Array>> DictArrayFromJSONString(const 
std::shared_ptr<DataType>&,
+                                                       std::string_view 
indices_json,
+                                                       std::string_view 
dictionary_json);
 
 /// \brief Create a Scalar from a JSON string
 /// \code {.cpp}
-/// std::shared_ptr<Scalar> scalar;
-/// ScalarFromJSONString(float64(), "42", &scalar);
+/// std::shared_ptr<Scalar> scalar =
+///     ScalarFromJSONString(float64(), "42", &scalar);
 /// \endcode
 ARROW_EXPORT
-Status ScalarFromJSONString(const std::shared_ptr<DataType>&, std::string_view 
json,
-                            std::shared_ptr<Scalar>* out);
+Result<std::shared_ptr<Scalar>> ScalarFromJSONString(const 
std::shared_ptr<DataType>&,
+                                                     std::string_view json);
 
 /// \brief Create a DictionaryScalar from a JSON string
 /// \code {.cpp}
-/// std::shared_ptr<Scalar> scalar;
-/// DictScalarFromJSONString(dictionary(int32(), utf8()), "3", R"(["k1", "k2", 
"k3",
-/// "k4"])", &scalar);
+/// std::shared_ptr<Scalar> dict_scalar =
+///     DictScalarFromJSONString(dictionary(int32(), utf8()), "3", R"(["k1", 
"k2", "k3",
+///     "k4"])", &scalar);

Review Comment:
   Ditto.



##########
cpp/src/arrow/json/from_string.cc:
##########
@@ -1051,28 +1050,28 @@ Status ScalarFromJSONString(const 
std::shared_ptr<DataType>& type,
   RETURN_NOT_OK(converter->AppendValue(json_doc));
   RETURN_NOT_OK(converter->Finish(&array));
   DCHECK_EQ(array->length(), 1);
-  return array->GetScalar(0).Value(out);
+  ARROW_ASSIGN_OR_RAISE(auto out, array->GetScalar(0));
+  return out;
 }
 
-Status DictScalarFromJSONString(const std::shared_ptr<DataType>& type,
-                                std::string_view index_json,
-                                std::string_view dictionary_json,
-                                std::shared_ptr<Scalar>* out) {
+Result<std::shared_ptr<Scalar>> DictScalarFromJSONString(
+    const std::shared_ptr<DataType>& type, std::string_view index_json,
+    std::string_view dictionary_json) {
   if (type->id() != Type::DICTIONARY) {
     return Status::TypeError("DictScalarFromJSONString requires dictionary 
type, got ",
                              *type);
   }
 
   const auto& dictionary_type = checked_cast<const DictionaryType&>(*type);
 
-  std::shared_ptr<Scalar> index;
   std::shared_ptr<Array> dictionary;
-  RETURN_NOT_OK(ScalarFromJSONString(dictionary_type.index_type(), index_json, 
&index));
+  ARROW_ASSIGN_OR_RAISE(auto index,
+                        ScalarFromJSONString(dictionary_type.index_type(), 
index_json));
   ARROW_ASSIGN_OR_RAISE(
       dictionary, ArrayFromJSONString(dictionary_type.value_type(), 
dictionary_json));
 
-  *out = DictionaryScalar::Make(std::move(index), std::move(dictionary));
-  return Status::OK();
+  auto out = DictionaryScalar::Make(std::move(index), std::move(dictionary));
+  return out;

Review Comment:
   Can we simplify this?
   
   ```suggestion
     return DictionaryScalar::Make(std::move(index), std::move(dictionary));
   ```



##########
cpp/src/arrow/json/from_string.h:
##########
@@ -68,52 +68,45 @@ Result<std::shared_ptr<Array>> ArrayFromJSONString(const 
std::shared_ptr<DataTyp
 /// \brief Create a ChunkedArray from a JSON string
 ///
 /// \code {.cpp}
-/// std::shared_ptr<ChunkedArray> chunked_array;
-/// ChunkedArrayFromJSONString(
-///   int64(), {R"([5, 10])", R"([null])", R"([16])"}, &chunked_array
-/// );
+/// std::shared_ptr<ChunkedArray> chunked_array =
+///     ChunkedArrayFromJSONString(int64(), {R"([5, 10])", R"([null])", 
R"([16])"})
+///         .ValueOrDie();
 /// \endcode
 ARROW_EXPORT
-Status ChunkedArrayFromJSONString(const std::shared_ptr<DataType>& type,
-                                  const std::vector<std::string>& json_strings,
-                                  std::shared_ptr<ChunkedArray>* out);
+Result<std::shared_ptr<ChunkedArray>> ChunkedArrayFromJSONString(
+    const std::shared_ptr<DataType>& type, const std::vector<std::string>& 
json_strings);
 
 /// \brief Create a DictionaryArray from a JSON string
 ///
 /// \code {.cpp}
-/// std::shared_ptr<Array> array;
-/// DictArrayFromJSONString(
-///   dictionary(int32(), utf8()),
-///   "[0, 1, 0, 2, 0, 3]", R"(["k1", "k2", "k3", "k4"])",
-///   &array
-/// );
+/// std::shared_ptr<Array> dict_array =
+///     DictArrayFromJSONString(dictionary(int32(), utf8()), "[0, 1, 0, 2, 0, 
3]",
+///     R"(["k1", "k2", "k3", "k4"])");

Review Comment:
   `Result<...>` is returned.



##########
cpp/src/arrow/json/from_string.h:
##########
@@ -68,52 +68,45 @@ Result<std::shared_ptr<Array>> ArrayFromJSONString(const 
std::shared_ptr<DataTyp
 /// \brief Create a ChunkedArray from a JSON string
 ///
 /// \code {.cpp}
-/// std::shared_ptr<ChunkedArray> chunked_array;
-/// ChunkedArrayFromJSONString(
-///   int64(), {R"([5, 10])", R"([null])", R"([16])"}, &chunked_array
-/// );
+/// std::shared_ptr<ChunkedArray> chunked_array =
+///     ChunkedArrayFromJSONString(int64(), {R"([5, 10])", R"([null])", 
R"([16])"})
+///         .ValueOrDie();

Review Comment:
   In general, error should be handled instead of using `ValueOrDie()`. So it 
may be better that we don't use `ValueOrDie()` in examples:
   
   ```suggestion
   /// Result<std::shared_ptr<ChunkedArray>> chunked_array_result =
   ///     ChunkedArrayFromJSONString(int64(), {R"([5, 10])", R"([null])", 
R"([16])"});
   ```



##########
cpp/src/arrow/json/from_string.h:
##########
@@ -68,52 +68,45 @@ Result<std::shared_ptr<Array>> ArrayFromJSONString(const 
std::shared_ptr<DataTyp
 /// \brief Create a ChunkedArray from a JSON string
 ///
 /// \code {.cpp}
-/// std::shared_ptr<ChunkedArray> chunked_array;
-/// ChunkedArrayFromJSONString(
-///   int64(), {R"([5, 10])", R"([null])", R"([16])"}, &chunked_array
-/// );
+/// std::shared_ptr<ChunkedArray> chunked_array =
+///     ChunkedArrayFromJSONString(int64(), {R"([5, 10])", R"([null])", 
R"([16])"})
+///         .ValueOrDie();
 /// \endcode
 ARROW_EXPORT
-Status ChunkedArrayFromJSONString(const std::shared_ptr<DataType>& type,
-                                  const std::vector<std::string>& json_strings,
-                                  std::shared_ptr<ChunkedArray>* out);
+Result<std::shared_ptr<ChunkedArray>> ChunkedArrayFromJSONString(
+    const std::shared_ptr<DataType>& type, const std::vector<std::string>& 
json_strings);
 
 /// \brief Create a DictionaryArray from a JSON string
 ///
 /// \code {.cpp}
-/// std::shared_ptr<Array> array;
-/// DictArrayFromJSONString(
-///   dictionary(int32(), utf8()),
-///   "[0, 1, 0, 2, 0, 3]", R"(["k1", "k2", "k3", "k4"])",
-///   &array
-/// );
+/// std::shared_ptr<Array> dict_array =
+///     DictArrayFromJSONString(dictionary(int32(), utf8()), "[0, 1, 0, 2, 0, 
3]",
+///     R"(["k1", "k2", "k3", "k4"])");
 /// \endcode
 ARROW_EXPORT
-Status DictArrayFromJSONString(const std::shared_ptr<DataType>&,
-                               std::string_view indices_json,
-                               std::string_view dictionary_json,
-                               std::shared_ptr<Array>* out);
+Result<std::shared_ptr<Array>> DictArrayFromJSONString(const 
std::shared_ptr<DataType>&,
+                                                       std::string_view 
indices_json,
+                                                       std::string_view 
dictionary_json);
 
 /// \brief Create a Scalar from a JSON string
 /// \code {.cpp}
-/// std::shared_ptr<Scalar> scalar;
-/// ScalarFromJSONString(float64(), "42", &scalar);
+/// std::shared_ptr<Scalar> scalar =
+///     ScalarFromJSONString(float64(), "42", &scalar);

Review Comment:
   Ditto.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscr...@arrow.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to