TransWikia.com

How to Create a Function to extract data from a JSON file

Stack Overflow Asked by ineedhelp on January 25, 2021

I am currently extracting trade data from a JSON file to create graphs. I have made a file to load in my JSON data but I want to create a a function that allows me to extract specific data points (Like a getter?), How would I go about this?
So the function is to store the data but Im not sure how to connect it back to my loaded in JSON file.

This is my function so far

class TradeInfo():
    
def __init__(self, sym, vol, pChange, gcount):
        self.symbol = sym
        self.volume = vol
        self.pChange = pChange
        self.gcount = gcount

    def getSymbol(self):
        return (self.symbol)

    def getVolume(self):
        return (self.volume)

    def getPriceChange(self):
        return (self.pChange)
    
    def getCount(self):
        return (self.gcount)

and below is the output I recive when I load in my Json file in a separate function
enter image description here

This is the code to load my JSON file
def loadfile(infileName,biDir= True):
    try:
        filename= infileName
        with open(filename) as f:
            fileObj = json.load(f)
            fileObj = json.dumps(fileObj, indent=4)
    except IOError as e:
        print("Error in file processing: " + str(e))
    return fileObj

One Answer

Let's say your JSON looks like this:

{
    "marketId": "LTC-AUD",
    "bestBid": "67.62",
    "bestAsk": "68.15",
    "lastPrice": "67.75",
    "volume24h": "190.19169781",
    "volumeQte24h": "12885.48752662",
    "price24h": "1.37",
    "pricePct24h": "2.06",
    "low24h": "65.89",
    "high24h": "69.48",
    "timestamp": "2020-10-10T11:14:19.270000Z"
}

So your loadfile function should look something like this:

import json


def load_file(infile_name) -> dict:
    try:
        with open(infile_name) as f:
            return json.load(f)
    except IOError as e:
        print("Error in file processing: " + e)


data = load_file("sample_json.json")

print(json.dumps(data, indent=2, sort_keys=True))
print(data['timestamp'])

Output:

{
  "bestAsk": "68.15",
  "bestBid": "67.62",
  "high24h": "69.48",
  "lastPrice": "67.75",
  "low24h": "65.89",
  "marketId": "LTC-AUD",
  "price24h": "1.37",
  "pricePct24h": "2.06",
  "timestamp": "2020-10-10T11:14:19.270000Z",
  "volume24h": "190.19169781",
  "volumeQte24h": "12885.48752662"
}
2020-10-10T11:14:19.270000Z

I've simplified your function and removed a redundant argument biDir because you're not using it anywhere.

Answered by baduker on January 25, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP