Python Data Handling

TypeError: ‘int64’ प्रकार की ऑब्जेक्ट JSON में परिवर्तित नहीं हो सकती, इसे कैसे ठीक करें

Spread the love

Python में Pandas और NumPy जैसी लाइब्रेरी के साथ काम करते समय “TypeError: Object of type ‘int64’ is not JSON serializable” त्रुटि अक्सर आती है। ऐसा इसलिए होता है क्योंकि JSON आंतरिक रूप से NumPy के `int64` डेटा प्रकार को सपोर्ट नहीं करता है। यह गाइड इस समस्या को हल करने के समाधान प्रस्तुत करता है।

विषयवस्तु की तालिका

‘int64’ को मानक Python प्रकारों में बदलना

`int64` मानों को मानक Python पूर्णांकों (`int`) या फ्लोटिंग-पॉइंट संख्याओं (`float`) में बदलना सबसे आम और अक्सर पसंदीदा समाधान है। यह संख्यात्मक डेटा को संरक्षित करता है जबकि JSON संगतता सुनिश्चित करता है।

Pandas उदाहरण:


import pandas as pd
import json

data = {'col1': [1, 2, 3, 4, 5, 2**63]}  # एक बड़ी संख्या शामिल है
df = pd.DataFrame(data)

# int में बदलें (बड़ी संख्याओं के लिए OverflowError का कारण बनेगा)
try:
    df['col1'] = df['col1'].astype(int)
    json_data = json.dumps(df.to_dict('records'))
    print(f"पूर्णांक रूपांतरण: {json_data}")
except OverflowError:
    print("पूर्णांक रूपांतरण के दौरान OverflowError हुआ।")

# float में बदलें (बड़ी संख्याओं को संभालता है)
df['col1'] = df['col1'].astype(float)
json_data = json.dumps(df.to_dict('records'))
print(f"फ्लोट रूपांतरण: {json_data}")

NumPy उदाहरण:


import numpy as np
import json

arr = np.array([1, 2, 3, 4, 5, 2**63], dtype=np.int64)

# int में बदलें (बड़ी संख्याओं के लिए OverflowError का कारण बनेगा)
try:
    arr = arr.astype(int)
    json_data = json.dumps(arr.tolist())
    print(f"पूर्णांक रूपांतरण: {json_data}")
except OverflowError:
    print("पूर्णांक रूपांतरण के दौरान OverflowError हुआ।")

# float में बदलें (बड़ी संख्याओं को संभालता है)
arr = arr.astype(float)
json_data = json.dumps(arr.tolist())
print(f"फ्लोट रूपांतरण: {json_data}")

संभावित रूप से बड़ी संख्याओं को संभालना

यदि आपके `int64` मान एक मानक Python पूर्णांक द्वारा प्रदर्शित अधिकतम मान से अधिक हो सकते हैं, तो `OverflowError` को रोकने के लिए `float` में बदलना आवश्यक है। फ्लोट संख्यात्मक मानों की एक बहुत व्यापक श्रेणी को संभाल सकते हैं।

‘int64’ को स्ट्रिंग में बदलना

यदि आपको सीरियलाइजेशन के बाद डेटा पर गणितीय संचालन करने की आवश्यकता नहीं है, तो स्ट्रिंग में बदलना एक सीधा विकल्प है। यह एक मजबूत दृष्टिकोण है जो संभावित अतिप्रवाह समस्याओं से बचाता है।


import pandas as pd
import json

data = {'col1': [1, 2, 3, 4, 5, 2**63]}
df = pd.DataFrame(data)

df['col1'] = df['col1'].astype(str)
json_data = json.dumps(df.to_dict('records'))
print(json_data)

डेटा सीरियलाइजेशन के लिए सर्वोत्तम अभ्यास

स्वच्छ कोड और आसान रखरखाव के लिए, सीरियलाइजेशन से पहले डेटा प्रकारों को लगातार संभालें। यदि आपकी डेटा संरचनाएँ जटिल हैं तो किसी समर्पित सीरियलाइजेशन लाइब्रेरी का उपयोग करने पर विचार करें। अपनी विशिष्ट एप्लिकेशन की आवश्यकताओं के आधार पर हमेशा उपयुक्त रूपांतरण विधि (int, float, या स्ट्रिंग) का सावधानीपूर्वक चयन करें।

प्रातिक्रिया दे

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *