pull/1757/merge
John Hogenmiller 2025-10-01 22:58:47 +05:30 zatwierdzone przez GitHub
commit 0b399550d9
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: B5690EEEBB952194
2 zmienionych plików z 8 dodań i 2 usunięć

Wyświetl plik

@ -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:

Wyświetl plik

@ -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``