Try:
$products_posts_arr = (array) $products_posts;
echo json_encode( $products_posts_arr );
OR
function object_to_array($data) {
if (is_array($data) || is_object($data)) {
$result = array();
foreach ($data as $key => $value) {
$result[$key] = object_to_array($value);
}
return $result;
}
return $data;
}
$products_posts_arr = object_to_array( $products_posts );
echo json_encode( $products_posts_arr );
Encode array not object, wc_get_products
will return object.