我正在编写一个python脚本,它应该从JSON对象获取数据,对于名为“transactionID”的字典键的每个实例,程序应该能够返回由特定transactionID执行的最后五个事务。在导入JSON文件、从文件中获取包含“transactionID”字段的字典并将其存储在名为transaction\u details的列表中之后,我不确定如何继续。JSON对象的格式如下:
[{
"transactionData":{
"transactionID":"tyeeeg5667557",
"deviceID": "uasjaslsa",
"IMEI":"ssjdjdssd",
"transactionDate": "12-12-2019",
"time": "11:40",
"accountDetails": {"userID": "kilopol", "creationdate": "21-12-2019"},
"Amount": {"amount": 2000, "units": "UGX", "qty":1},
"paymentMethod": {"name": "mobile money"},
"productdetails": {"productid": "12jfjf", "name": "airtime", "units":"UGX"}
},
"locationdetails": {"address":"Ntinda-Kampala", "street": "Chwa 2 Ntinda-Nakawa"},
"api key": "a9dd1d0f-a605-499a-9618-c449065d34bb",
"callbackUrl": "http://clinet.com/method",
"clientid": "5ce7baf3ffd59f2633ed64a3",
"receptiontime": 1559297122942
},
{
"transactionData":{
"transactionID":"yetrw5667557",
"deviceID": "uweyjaslsa",
"IMEI":"ssycvjdssd",
"transactionDate": "12-12-2019",
"time": "11:40",
"accountDetails": {"userID": "kimange", "creationdate": "21-12-2019"},
"Amount": {"amount": 4000, "units": "UGX", "qty":2},
"paymentMethod": {"name": "airtel money"},
"productdetails": {"productid": "12jfjf", "name": "airtime", "units":"UGX"}
},
"locationdetails": {"address":"Kamwokya-Kampala", "street": "Chwa 2 Ntinda-Nakawa"},
"api key": "a9dd1d0f-a605-499a-9618-c449065d34bb",
"callbackUrl": "http://clinet.com/method",
"clientid": "5ce7bafutwf2633ed64a3",
"receptiontime": 1559297122942
},
{
"transactionData":{
"transactionID":"tyeeeg5667557",
"deviceID": "uweyjaslsa",
"IMEI":"ssycvjdssd",
"transactionDate": "12-12-2019",
"time": "11:40",
"accountDetails": {"userID": "kimange", "creationdate": "21-12-2019"},
"Amount": {"amount": 4000, "units": "UGX", "qty":2},
"paymentMethod": {"name": "airtel money"},
"productdetails": {"productid": "12jfjf", "name": "airtime", "units":"UGX"}
},
"locationdetails": {"address":"Kamwokya-Kampala", "street": "Chwa 2 Ntinda-Nakawa"},
"api key": "a9dd1d0f-a605-499a-9618-c449065d34bb",
"callbackUrl": "http://clinet.com/method",
"clientid": "5ce7bafutwf2633ed64a3",
"receptiontime": 1559297122942
},
{
"transactionData":{
"transactionID":"tyeeeg5667557",
"deviceID": "uasjaslsa",
"IMEI":"ssjdjdssd",
"transactionDate": "12-12-2019",
"time": "11:40",
"accountDetails": {"userID": "kilopol", "creationdate": "21-12-2019"},
"Amount": {"amount": 2000, "units": "UGX", "qty":1},
"paymentMethod": {"name": "mobile money"},
"productdetails": {"productid": "12jfjf", "name": "airtime", "units":"UGX"}
},
"locationdetails": {"address":"Gulu", "street": "Burton Street"},
"api key": "a9dd1d0f-a605-499a-9618-c449065d34bb",
"callbackUrl": "http://clinet.com/method",
"clientid": "5ce7baf3ffd59f2633ed64a3",
"receptiontime": 1559297122942
},
{
"transactionData":{
"transactionID":"tyeeeg5667557",
"deviceID": "uasjaslsa",
"IMEI":"ssjdjdssd",
"transactionDate": "12-12-2019",
"time": "11:40",
"accountDetails": {"userID": "kilopol", "creationdate": "21-12-2019"},
"Amount": {"amount": 2000, "units": "UGX", "qty":1},
"paymentMethod": {"name": "mobile money"},
"productdetails": {"productid": "12jfjf", "name": "airtime", "units":"UGX"}
},
"locationdetails": {"address":"Ntinda-Kampala", "street": "Chwa 2 Ntinda-Nakawa"},
"api key": "a9dd1d0f-a605-499a-9618-c449065d34bb",
"callbackUrl": "http://clinet.com/method",
"clientid": "5ce7baf3ffd59f2633ed64a3",
"receptiontime": 1559297122942
},
{
"transactionData":{
"transactionID":"ygdras557",
"deviceID": "uasjaslsa",
"IMEI":"ssjdjdssd",
"transactionDate": "12-12-2019",
"time": "11:40",
"accountDetails": {"userID": "kilopol", "creationdate": "21-12-2019"},
"Amount": {"amount": 2000, "units": "UGX", "qty":1},
"paymentMethod": {"name": "mobile money"},
"productdetails": {"productid": "12jfjf", "name": "airtime", "units":"UGX"}
},
"locationdetails": {"address":"Ntinda-Kampala", "street": "Chwa 2 Ntinda-Nakawa"},
"api key": "a9dd1d0f-a605-499a-9618-c449065d34bb",
"callbackUrl": "http://clinet.com/method",
"clientid": "5ce7baf3ffd59f2633ed64a3",
"receptiontime": 1559297122942
},
{
"transactionData":{
"transactionID":"tyeeeg5667557",
"deviceID": "uasjaslsa",
"IMEI":"ssjdjdssd",
"transactionDate": "7-7-2019",
"time": "11:40",
"accountDetails": {"userID": "kilopol", "creationdate": "21-12-2019"},
"Amount": {"amount": 6700, "units": "UGX", "qty":1},
"paymentMethod": {"name": "mobile money"},
"productdetails": {"productid": "12jfjf", "name": "airtime", "units":"UGX"}
},
"locationdetails": {"address":"Ntinda-Kampala", "street": "Chwa 2 Ntinda-Nakawa"},
"api key": "a9dd3d9f-a605-499a-9618-c449065d34bb",
"callbackUrl": "http://clinet.com/method",
"clientid": "5ce7baf3ffd59f2633ed64a3",
"receptiontime": 1559297122942
}
]
我需要一些关于如何实现这一点的帮助,继续下面的代码,从我创建一个名为transaction\u details的列表来保存包含transactionID键的字典开始
from pymongo import MongoClient
import json
class ExtractData(object):
def __init__(self, file):
self.file = file
def obtainLastFiveTransactions(self):
client = MongoClient('localhost', 27017)
database = client['database']
collection = database['collection']
with open(self.file) as f_obj:
data_file = json.load(f_obj)
collection.insert_many(data_file)
data_received = collection.find({})
for dict_data in data_received:
for key, value in dict_data.items():
if key == 'transactionData':
transactionDataValues = value
transaction_details = []
for key, value in transactionDataValues.items():
if key == 'transactionID':
transaction_details.append(transactionDataValues)
可能不是最有效的解决方案,但此代码段读入json,创建一个包含TransactionID作为键的字典,然后将5个按transactionDate排序的最新事务附加到字典中
对于所有事务ID:
对于特定交易:
希望这有点帮助
相关问题 更多 >
编程相关推荐