ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄/Python

νŒŒμ΄μ¬μ—μ„œ json νŒŒμ‹±ν•˜κΈ°

μ„œμ•„λž‘πŸ˜ 2023. 5. 18. 11:30

 

 

νŒŒμ΄μ¬μ—μ„œ json νŒŒμΌμ„ 읽고 νŒŒμ‹± ν›„ λ‚˜λ¦„μ˜ 필터링을 거쳐 보고 싢은 정보λ₯Ό 좜λ ₯ν•˜λŠ” κ°„λ‹¨ν•œ μ˜ˆμ œλ‹€. νŒŒμ΄μ¬μ—μ„œλŠ” json을 js와 같이 νŽΈν•˜κ²Œ μ‚¬μš©ν•  수 있으며, λ³„λ„μ˜ μΆ”κ°€ νŒ¨ν‚€μ§€ 없이 json을 읽고 μ“Έμˆ˜ μžˆλ„λ‘ μ§€μ›ν•œλ‹€.

보톡 json을 파이썬의 리슀트, νŠœν”Œ, λ”•μ…”λ„ˆλ¦¬λ‘œ λ³€ν™˜ν•΄μ„œ ν”„λ‘œκ·Έλž¨μ— λ°˜μ˜ν•˜λŠ” 것이 μΌλ°˜μ μ΄λ‹€.

 

μ•„λž˜λŠ” json νŒŒμΌμ„ open ν›„ loadν•¨μˆ˜λ₯Ό 톡해 json_data둜 읽고 ν•„μš”ν•œ 데이터듀을 λ¦¬μŠ€νŠΈμ— λ”°λ‘œ λ‹΄μ•„μ„œ count와 데이터 λͺ¨λ‘ 좜λ ₯ν•˜λŠ” μ˜ˆμ œμ΄λ‹€.

import json

with open("ETHUSDT.json", "r") as f:
    json_data = json.load(f)

# print(json.dumps(json_data))



buy_arr = []
sell_arr = []
for json_obj in json_data:
    if "SELL" in json_obj["side"] and ("SEOA" in json_obj["clientOrderId"] or "C2O" in json_obj["clientOrderId"] or "REFILL" in json_obj["clientOrderId"]):
        sell_arr.append((json_obj["price"], json_obj["side"], json_obj["clientOrderId"]))
    
    if "BUY" in json_obj["side"] and ("SEOA" in json_obj["clientOrderId"] or "C2O" in json_obj["clientOrderId"] or "REFILL" in json_obj["clientOrderId"]):
        buy_arr.append((json_obj["price"], json_obj["side"], json_obj["clientOrderId"]))
    
    
sub_arr = []
for json_obj in json_data:
    if "SUB" in json_obj["clientOrderId"]:
        sub_arr.append((json_obj["price"], json_obj["side"], json_obj["clientOrderId"]))


#buy_jes_arr.sort(key = lambda x:x[0], reverse=True)

print("Total count = ", len(json_data))

print("JES_BUY count = ", len(buy__arr))
print("JES_SELL count = ", len(sell_arr))
print("SUB count = ", len(sub_arr))
print("---- DATA ----")

print("BUY: ", buy_arr)
print("SELL: ", sell_arr)
print("SUB:", sub_arr)

 

μ•„λž˜λŠ” json파일의 λ‚΄μš©μ΄λ‹€. Array λ‚΄ 객체가 200κ°œκ°€ λ„˜κΈ° λ•Œλ¬Έμ— μΌλΆ€λ§Œ κ°€μ Έμ™”λ‹€.

[
    {
        "time": "1684375756476",
        "updateTime": "1684375756499",
        "orderId": "1423041418184758528",
        "clientOrderId": "SELL-755933-1020003-100-O-SEOA-OT",
        "symbol": "ETHUSDT",
        "price": "1823.35",
        "orderType": "LIMIT",
        "side": "SELL",
    },
    {
        "time": "1684375756467",
        "updateTime": "1684375756769",
        "orderId": "1423041418159521024",
        "clientOrderId": "BUY-755933-1020003-1-O-SEOA",
        "symbol": "ETHUSDT",
        "price": "1820.85",
        "orderType": "LIMIT",
        "side": "BUY",
    },
    {
        "time": "1684375750347",
        "updateTime": "1684375753853",
        "orderId": "1423041366687094016",
        "clientOrderId": "BUY-749778-1020003-1-O-SUB",
         "symbol": "ETHUSDT",
        "price": "1819.25",
        "orderType": "LIMIT",
        "side": "BUY",
    },
    {
        "time": "1684375750326",
        "updateTime": "1684375750349",
        "orderId": "1423041366645079296",
        "clientOrderId": "SELL-749778-1020003-100-O-REFILL-OT",
         "symbol": "ETHUSDT",
        "price": "1819.05",
        "orderType": "LIMIT",
        "side": "BUY"
    }
    
...

]