Python 将JSOn多个对象解析为CSV
我需要帮助解析一个JSON与多个对象到CSV,任何帮助将不胜感激。我试图编写代码,并且能够只解析JSON的out对象,但不能解析所有对象 我对解析内部JSON对象“categoryName”:“Databases” 我不是发布完整的JSON,因为它非常冗长,只是发布了部分内容,如果它是为了更好地理解下面的内容Python 将JSOn多个对象解析为CSV,python,json,csv,Python,Json,Csv,我需要帮助解析一个JSON与多个对象到CSV,任何帮助将不胜感激。我试图编写代码,并且能够只解析JSON的out对象,但不能解析所有对象 我对解析内部JSON对象“categoryName”:“Databases” 我不是发布完整的JSON,因为它非常冗长,只是发布了部分内容,如果它是为了更好地理解下面的内容 { "categories" : [ { "categoryName" : "HDFSEncryptionZones", "metrics" : [ { "metricNa
{
"categories" : [ {
"categoryName" : "HDFSEncryptionZones",
"metrics" : [ {
"metricName" : "EncryptionZone Object Count",
"value" : 0
}, {
"metricName" : "Out of EncryptionZone Objects Count",
"value" : 0
} ]
}, {
"categoryName" : "Databases",
"metrics" : [ {
"metricName" : "No. of Databases",
"value" : 78
}, {
"metricName" : "Top 5 Databases (by no of tables)",
"value" : [ {
"name" : "abc",
"value" : 1234,
"id" : 1187422
}, {
"name" : "def",
"value" : 578,
"id" : 8194003
}, {
"name" : "ghi",
"value" : 241,
"id" : 1214282
}, {
"name" : "jkl",
"value" : 214,
"id" : 11677477
}, {
"name" : "mno",
"value" : 186,
"id" : 6716158
}, {
"name" : "pqr",
"value" : 130,
"id" : 59489134
}, {
"name" : "stu",
"value" : 102,
"id" : 59489133
}, {
"name" : "xyz",
"value" : 96,
"id" : 11630638
}, {
"name" : "temp",
"value" : 80,
"id" : 100074536
}, {
"name" : "test",
"value" : 72,
"id" : 59489132
} ]
} ]
}, {
"categoryName" : "Storage",
"metrics" : [ {
"metricName" : "No. of S3 Objects.",
"value" : 0
}, {
"metricName" : "No. of HDFS Objects.",
"value" : 3097309
} ]
}, {...
试一试
我假设您想要提取数据库列表。如果你需要浏览json直到你得到一个有趣的列表。然后是一个
csv.DictWriter
,因为您将有一个dict.code列表,可以是:
import requests
import json
import csv
from requests.auth import HTTPBasicAuth
r = requests.get('https://url')
properties = r.json()['categories']
for temp in properties:
if "Databases" == temp['categoryName']: # first locate "categoryName": " Databases"
for kind in temp['metrics']:
for value in kind.values():
if isinstance(value, list): # next find a list value
# open a file for writing (with ensure close on end of block)
with open('/home/sourcecode/csv_data.csv', 'w', newline = '') as csv_data:
# create the csv writer object
writer = csv.DictWriter(fd, fieldnames = value[0].keys())
writer.writeheader() # first the header
for base in value: # then the values
writer.writerow(base)
不确定。你想要达到的目标。你能把预期的输出也张贴出来吗?
for category in properties:
if category['categoryName'] == "Databases":
for metric in category['metrics']:
if metric['metricName'] == "Top 5 Databases (by no of tables)":
for m in metric['value']:
print(m['name'],m['value'],m['id'],sep=',')
import requests
import json
import csv
from requests.auth import HTTPBasicAuth
r = requests.get('https://url')
properties = r.json()['categories']
for temp in properties:
if "Databases" == temp['categoryName']: # first locate "categoryName": " Databases"
for kind in temp['metrics']:
for value in kind.values():
if isinstance(value, list): # next find a list value
# open a file for writing (with ensure close on end of block)
with open('/home/sourcecode/csv_data.csv', 'w', newline = '') as csv_data:
# create the csv writer object
writer = csv.DictWriter(fd, fieldnames = value[0].keys())
writer.writeheader() # first the header
for base in value: # then the values
writer.writerow(base)