相关疑难解决方法(0)

如何将JSON转换为CSV?

我有一个JSON文件,我想要转换为CSV文件.我怎么能用Python做到这一点?

我试过了:

import json
import csv

f = open('data.json')
data = json.load(f)
f.close()

f = open('data.csv')
csv_file = csv.writer(f)
for item in data:
    csv_file.writerow(item)

f.close()
Run Code Online (Sandbox Code Playgroud)

但是,它没有用.我正在使用Django,我收到的错误是:

import json
import csv

f = open('data.json')
data = json.load(f)
f.close()

f = open('data.csv')
csv_file = csv.writer(f)
for item in data:
    f.writerow(item)  # ? changed

f.close()
Run Code Online (Sandbox Code Playgroud)

那么,我尝试了以下内容:

[{
        "pk": 22,
        "model": "auth.permission",
        "fields": {
            "codename": "add_logentry",
            "name": "Can add log entry",
            "content_type": 8
        }
    }, {
        "pk": 23,
        "model": "auth.permission",
        "fields": {
            "codename": "change_logentry", …
Run Code Online (Sandbox Code Playgroud)

python csv json

161
推荐指数
11
解决办法
41万
查看次数

如何使用jq将json转换为csv文件?

这是我的 json 文件:

{
  "ClientCountry": "ca",
  "ClientASN": 812,
  "CacheResponseStatus": 404,
  "CacheResponseBytes": 130756,
  "CacheCacheStatus": "hit"
}
{
  "ClientCountry": "ua",
  "ClientASN": 206996,
  "CacheResponseStatus": 301,
  "CacheResponseBytes": 142,
  "CacheCacheStatus": "unknown"
}
{
  "ClientCountry": "ua",
  "ClientASN": 206996,
  "CacheResponseStatus": 0,
  "CacheResponseBytes": 0,
  "CacheCacheStatus": "unknown"
}
Run Code Online (Sandbox Code Playgroud)

我想将这些 json 转换为 csv,如下所示。

"ClientCountry", "ClientASN","CacheResponseStatus", "CacheResponseBytes", "CacheCacheStatus"
"ca", 812, 404, 130756, "hit";
"ua", 206996, 301, 142,"unknown";
"ua", 206996, 0,0,"unknown";
Run Code Online (Sandbox Code Playgroud)

请让我知道如何使用 jq 实现此目的?

我只是在下面尝试过。但它不起作用。

jq 'to_entries[] | [.key, .value] | @csv'
Run Code Online (Sandbox Code Playgroud)

问候帕拉尼

csv json jq

9
推荐指数
1
解决办法
6777
查看次数

influxdb 数据/表可以下载为 csv 文件吗?

Influxdb 是一个时间序列数据库,它将数据及其属性存储在表中,通常称为测量。

influxdb 数据库中的表可以以 csv 格式提取到本地系统吗?

database csv influxdb

8
推荐指数
1
解决办法
2万
查看次数

如何使用 jq 将任意嵌套 JSON 转换为 CSV – 以便可以将其转换回来?

如何使用jq将任意JSON 对象数组转换为 CSV,而该数组中的对象是嵌套的

\n

StackOverflow 有大量的问题/答案,其中引用了特定的输入或输出字段,但我希望有一个通用的解决方案

\n
    \n
  1. 包括标题行,
  2. \n
  3. 适用于任何 JSON 输入,包括嵌套数组 + 对象,
  4. \n
  5. 允许记录缺少其他记录中存在的键值
  6. \n
  7. 不硬编码任何字段名称,
  8. \n
  9. 如果需要,允许将 CSV 转换回嵌套 JSON 结构,并且
  10. \n
  11. 使用关键路径作为标头名称(请参阅以下描述)。
  12. \n
\n

点符号

\n

许多使用 JSON 的产品(如CouchDBMongoDB、 \xe2\x80\xa6 )和库(如Lodash、 \xe2\x80\xa6 )使用语法变体,允许通过将关键片段与字符,通常是一个点(\xe2\x80\x98dot 表示法\xe2\x80\x99)。

\n

像这样的关键路径的一个示例是"a.b.0.c"引用此 JSON 片段中的深度嵌套属性:

\n
{\n  "a": {\n    "b": [\n      {\n        "c": 123,\n      }\n    ]\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

警告:在大多数情况下,使用此方法是一种实用的解决方案,但这意味着必须在属性名称中禁止点字符,或者必须发明更复杂的(绝对从未使用过的属性名称)来转义属性名称中的点/访问嵌套字段。MongoDB在 v5.0 之前就禁止使用"."in 文档,一些库有字段访问的解决方法( …

csv json google-sheets mongodb jq

7
推荐指数
1
解决办法
4484
查看次数

如何从 InfluxDB 的 HTTP API 获取 CSV 而不是 JSON?

我想在商业智能的背景下使用 influxdb:ETL、连接来自其他数据库的数据、创建实时仪表板。目前,我们正在使用标准 BI 工具,例如 QLIK 或 Microsoft PowerBI。

根据文档,HTTP API应该用于查询(https://docs.influxdata.com/influxdb/v1.2/guides/querying_data/)我的问题是API的输出似乎只是JSON。这意味着每个分析师首先必须弄清楚如何将 JSON 转换为表格格式,然后再加入其他数据等。

是否可以告诉 API 生成类似 csv 的表输出?您是否建议使用哪些工具来制作良好的仪表板?我尝试了 grafana,但在加入其他数据时似乎不够。

csv json business-intelligence influxdb

5
推荐指数
1
解决办法
8967
查看次数

jq:对象不能是 csv 格式的,只能是数组

我是 jq 的新手,我有一个来自 DynamoDB 表的 JSON 文件,我想将其转换为 CSV。这是我的 JSON 文件。

[
    {
        "SnsPublishTime": {
            "S": "2019-07-27T15:07:38.904Z"
        },
        "SESreportingMTA": {
            "S": "dsn; a8-19.smtp-out.amazonses.com"
        },
        "SESMessageType": {
            "S": "Bounce"
        },
        "SESDestinationAddress": {
            "S": "bounce@simulator.amazonses.com"
        },
        "SESMessageId": {
            "S": "0100016c33f91857-600a8e44-c419-4a02-bfd6-7f6908f5969e-000000"
        },
        "SESbounceSummary": {
            "S": "[{\"emailAddress\":\"bounce@simulator.amazonses.com\",\"action\":\"failed\",\"status\":\"5.1.1\",\"diagnosticCode\":\"smtp; 550 5.1.1 user unknown\"}]"
        }
    }
]
Run Code Online (Sandbox Code Playgroud)

如果我运行,我会得到正确的输出

jq -r '.[] ' test.json
Run Code Online (Sandbox Code Playgroud)

但如果我跑

jq -r '.[] |@csv' test.json
Run Code Online (Sandbox Code Playgroud)

然后我收到一个错误:

jq: error (at test.json:22): object ({"SnsPublis...) 不能是 csv 格式,只有数组

如何正确地将此 JSON 转换为 CSV?我尝试了一个多小时的谷歌搜索,但似乎无法弄清楚。

谢谢!

json export-to-csv jq

5
推荐指数
2
解决办法
4680
查看次数

使用jq从ElasticSearch结果中的_source文档中提取数据

我正在阅读这个StackOverFlow讨论,将JSON转换为CSV,这似乎很棒,但是我无法使用基本的jq来工作。.我不确定我在做什么错。我已经尝试了基本的操作,但是我无法破解错误。这是我在Shell脚本中的ES查询

curl -XGET 'http://es-1:9200/data_latest/customer/_search?pretty' -H 'Content-Type: application/json' -d'
{
"_source": ["customer_app_version", "customer_num_apps", "customer_name","app_disk_size_bytes","app_memory_capacity_bytes"],
    "query": {
        "bool": {
            "must": [{
                "term": {
                    "is_app_customer": {
                        "value": "true"
                    }
                }
            }]
        }
    },
    "aggs": {
        "Customer_UUID": {
            "terms": {
                "field": "customer_uuid",
                "size": 100
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Shell脚本输出

{
  "took": 8,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
  },
  "hits": {
    "total": 6171,
    "max_score": 1.8510876,
    "hits": [
      {
        "_index": "data_latest_v1",
        "_type": "customer",
        "_id": "0003245-4844-9015-1z2e-d4ae5234rd56",
        "_score": 1.8510876,
        "_source": …
Run Code Online (Sandbox Code Playgroud)

csv shell json curl jq

3
推荐指数
1
解决办法
2312
查看次数

jq:将带有数组的 JSON 文件转换为 CSV - 转置?

我正在尝试使用 jq 将 JSON 输出转换为 CSV。

这是 input.json (精简了很多 - 我最多可能有 600 个数组元素,但每个元素的数量相同):

    {
  "latitude": [39.582, 39.582, 39.582],
  "longitude": [26.675, 26.675, 26.675],
  "drivingDifficultyIndex": [0, 34, 34],
  "iconCode": [31, 11, 11],
  "observationTimeUtcIso": ["2016-06-26T00:20:00+0000", "2016-06-26T01:20:00+0000", "2016-06-26T02:20:00+0000"],
  "precip1Hour": [0.0, 0.1, 0.5]
}
Run Code Online (Sandbox Code Playgroud)

迄今为止我最好的尝试是:

jq --raw-output 'keys , .[] | @csv'
Run Code Online (Sandbox Code Playgroud)

这使得

"drivingDifficultyIndex","iconCode","latitude","longitude","observationTimeUtcIso","precip1Hour"
39.582,39.582,39.582
26.675,26.675,26.675
0,34,34
31,11,11
"2016-06-26T00:20:00+0000","2016-06-26T01:20:00+0000","2016-06-26T02:20:00+0000"
0,0.1,0.5
Run Code Online (Sandbox Code Playgroud)

如何使用 jq 将任意简单的 JSON 转换为 CSV?给出了一些很好的提示,但我最终仍然得到行中的数据(如上所示)而不是列中。

我追求的是这样的:

"latitude","longitude","drivingDifficultyIndex","iconCode","observationTimeUtcIso","precip1Hour"
39.582, 26.675, 0,  31, \2016-06-26T00:20:00+0000\",    0
39.582, 26.675, 34, 11, \"2016-06-26T01:20:00+0000\",   0.1
39.582, 26.675, 34, 11, …
Run Code Online (Sandbox Code Playgroud)

csv arrays json jq

2
推荐指数
1
解决办法
1323
查看次数