Repository: great-expectations/great_expectations

Issue:
expect_column_values_to_be_json_parseable fails with error in v3 api
**Describe the bug**
Expectation `expect_column_values_to_be_json_parseable` fails with error in v3 API for a pandas batch

**To Reproduce**
1. Create a v3 data source
```
  my_data_source:
      class_name: Datasource
      execution_engine:
        class_name: PandasExecutionEngine
      data_connectors:
        raw:
          class_name: ConfiguredAssetFilesystemDataConnector
          base_directory: /tmp/test/ge
          assets:
            my_asset:
              base_directory: my_asset/
              pattern: (.*)/data\.csv
              group_names:
                - batch_date
```
2. Create a test data file `/tmp/test/ge/my_asset/2021-09-16/data.csv`
```
id,json_col
1,{"key":"value"}
```
3. Try to validate
```
suite = context.create_expectation_suite("test", overwrite_existing=True)
br = BatchRequest(
        datasource_name="my_data_source",
        data_connector_name="raw",
        data_asset_name="my_asset",
        data_connector_query={
            "batch_filter_parameters": {
                "batch_date": "2021-09-16",
            }
        }
    )
validator = context.get_validator(batch_request=br, expectation_suite=suite)
validator.expect_column_values_to_be_json_parseable("json_col") 
```
Output:
```
---------------------------------------------------------------------------
MetricProviderError                       Traceback (most recent call last)
<ipython-input-7-f1dd2bd9c28e> in <module>
----> 1 validator.expect_column_values_to_be_json_parseable("json_col")

~/.pyenv/versions/3.7.11/envs/data-great-expectations/lib/python3.7/site-packages/great_expectations/validator/validator.py in inst_expectation(*args, **kwargs)
    273
    274                 else:
--> 275                     raise err
    276             return validation_result
    277

~/.pyenv/versions/3.7.11/envs/data-great-expectations/lib/python3.7/site-packages/great_expectations/validator/validator.py in inst_expectation(*args, **kwargs)
    232                         evaluation_parameters=self._expectation_suite.evaluation_parameters,
    233                         data_context=self._data_context,
--> 234                         runtime_configuration=basic_runtime_configuration,
    235                     )
    236

~/.pyenv/versions/3.7.11/envs/data-great-expectations/lib/python3.7/site-packages/great_expectations/expectations/expectation.py in validate(self, validator, configuration, evaluation_parameters, interactive_evaluation, data_context, runtime_configuration)
    633         evr = validator.graph_validate(
    634             configurations=[configuration],
--> 635             runtime_configuration=runtime_configuration,
    636         )[0]
    637

~/.pyenv/versions/3.7.11/envs/data-great-expectations/lib/python3.7/site-packages/great_expectations/validator/validator.py in graph_validate(self, configurations, metrics, runtime_configuration)
    437             expectation_impl = get_expectation_impl(evaluated_config.expectation_type)
    438             validation_dependencies = expectation_impl().get_validation_dependencies(
--> 439                 evaluated_config, self._execution_engine, runtime_configuration
    440             )["metrics"]
    441

~/.pyenv/versions/3.7.11/envs/data-great-expectations/lib/python3.7/site-packages/great_expectations/expectations/expectation.py in get_validation_dependencies(self, configuration, execution_engine, runtime_configuration)
   1250             metric_name=self.map_metric + ".unexpected_count",
   1251             configuration=configuration,
-> 1252             runtime_configuration=runtime_configuration,
   1253         )
   1254         metric_dependencies[

~/.pyenv/versions/3.7.11/envs/data-great-expectations/lib/python3.7/site-packages/great_expectations/expectations/registry.py in get_metric_kwargs(metric_name, configuration, runtime_configuration)
    203         if metric_definition is None:
    204             raise ge_exceptions.MetricProviderError(
--> 205                 f"No definition found for {metric_name}"
    206             )
    207         default_kwarg_values = metric_definition["default_kwarg_values"]

MetricProviderError: No definition found for column_values.json_parsable.unexpected_count
```

**Expected behavior**
The expectation should successfully validate the data.

Output with v2 api
```
import great_expectations as ge
import pandas as pd

context = ge.get_context()
suite = context.create_expectation_suite("test", overwrite_existing=True)

df = pd.DataFrame({"test": ["""{"key":"value"}"""], "failing_test": ["a"]})
batch_kwargs = {"datasource": "my_data_source", "data_asset_name": "my_asset", "dataset": df}
batch = context.get_batch(batch_kwargs=batch_kwargs, expectation_suite_name=suite)

batch.expect_column_values_to_be_json_parseable("test")

{
  "success": true,
  "meta": {},
  "exception_info": {
    "raised_exception": false,
    "exception_traceback": null,
    "exception_message": null
  },
  "result": {
    "element_count": 1,
    "missing_count": 0,
    "missing_percent": 0.0,
    "unexpected_count": 0,
    "unexpected_percent": 0.0,
    "unexpected_percent_total": 0.0,
    "unexpected_percent_nonmissing": 0.0,
    "partial_unexpected_list": []
  },
  "expectation_config": {
    "expectation_type": "expect_column_values_to_be_json_parseable",
    "meta": {},
    "kwargs": {
      "column": "test",
      "result_format": "BASIC"
    }
  }
}
```

**Environment (please complete the following information):**
 - Operating System: MacOS
 - Great Expectations Version: 0.13.33



Discussion:
Thanks for raising this issue @beherap! We will take a look and respond over the next week or so.
looks like the issue there is a typo https://github.com/great-expectations/great_expectations/blob/a1f42adeb54902d696a8ac73a20ae6f7c39ad16f/great_expectations/expectations/core/expect_column_values_to_be_json_parseable.py#L86. i think it should be `column_values.json_parseable`

Resolving patch:
diff --git a/great_expectations/expectations/core/expect_column_values_to_be_json_parseable.py b/great_expectations/expectations/core/expect_column_values_to_be_json_parseable.py
--- a/great_expectations/expectations/core/expect_column_values_to_be_json_parseable.py
+++ b/great_expectations/expectations/core/expect_column_values_to_be_json_parseable.py
@@ -83,7 +83,7 @@ class ExpectColumnValuesToBeJsonParseable(ColumnMapExpectation):
         "requirements": [],
     }
 
-    map_metric = "column_values.json_parsable"
+    map_metric = "column_values.json_parseable"
     success_keys = ("mostly",)
     default_kwarg_values = {
         "row_condition": None,


Test patch: