kopia lustrzana https://github.com/simonw/datasette
Merge 1cdcd8894c
into d87bd12dbc
commit
0b399550d9
|
@ -11,13 +11,13 @@ from datasette.utils.asgi import Response
|
|||
|
||||
def convert_specific_columns_to_json(rows, columns, json_cols):
|
||||
json_cols = set(json_cols)
|
||||
if not json_cols.intersection(columns):
|
||||
if not json_cols.intersection(columns) and not json_cols == {"*"}:
|
||||
return rows
|
||||
new_rows = []
|
||||
for row in rows:
|
||||
new_row = []
|
||||
for value, column in zip(row, columns):
|
||||
if column in json_cols:
|
||||
if column in json_cols or (json_cols == {"*"}):
|
||||
try:
|
||||
value = json.loads(value)
|
||||
except (TypeError, ValueError) as e:
|
||||
|
|
|
@ -188,6 +188,12 @@ query string arguments:
|
|||
JSON. Without this argument those columns will be returned as JSON objects
|
||||
that have been double-encoded into a JSON string value.
|
||||
|
||||
If you have many columns containing JSON values, you can pass ``_json=*``
|
||||
to attempt converting loading all columns as JSON. This is a best effort
|
||||
approach. Any columns that fail to render as valid JSON will be passed
|
||||
through unaltered, while any column with valid JSON will be converted.
|
||||
There may be a performance impact on large result sets.
|
||||
|
||||
Compare `this query without the argument <https://fivethirtyeight.datasettes.com/fivethirtyeight.json?sql=select+%27{%22this+is%22%3A+%22a+json+object%22}%27+as+d&_shape=array>`_ to `this query using the argument <https://fivethirtyeight.datasettes.com/fivethirtyeight.json?sql=select+%27{%22this+is%22%3A+%22a+json+object%22}%27+as+d&_shape=array&_json=d>`_
|
||||
|
||||
``?_json_infinity=on``
|
||||
|
|
Ładowanie…
Reference in New Issue