2013-02-17 12 views
6

मेरे पास कुछ पायथन डेटा है, अचार के लिए क्रमबद्ध है और इसे सी # प्रोग्राम में उपयोग करने की आवश्यकता है। तो सी # में अजगर अचार को deserialize करने के लिए कोई रास्ता है? मैं documentation से आदिमैं सी # में पाइथन अचार को कैसे deserialize कर सकते हैं?

उत्तर

5

आप कहते हैं कि आप अचार उत्पन्न करने वाले प्रोग्राम को नहीं बदल सकते हैं। लेकिन निश्चित रूप से आप अचार को पढ़ने और JSON के रूप में इसे फिर से लिखने के लिए एक अलग पायथन प्रोग्राम लिख सकते हैं?

import json, pickle 

with open("data.pickle", "rb") as fpick: 
    with open("data.json", "w") as fjson: 
     json.dump(pickle.load(fpick), fjson) 
2

उद्धरण JSON करने के लिए डेटा स्वरूप को बदल नहीं सकते या:

डेटा अचार द्वारा इस्तेमाल किया प्रारूप अजगर-विशिष्ट है। इसमें लाभ है कि बाहरी मानकों जैसे XDR (जो सूचक साझाकरण का प्रतिनिधित्व नहीं कर सकता) द्वारा लगाए गए कोई प्रतिबंध नहीं हैं; हालांकि इसका मतलब है कि गैर-पायथन प्रोग्राम मसालेदार पायथन ऑब्जेक्ट्स का पुनर्निर्माण करने में सक्षम नहीं हो सकते हैं।

तो आपके प्रश्न का उत्तर नहीं है, आप इसे सी # में deserialize नहीं कर सकते हैं। यदि आपको अन्य प्लेटफार्मों के साथ संवाद करने की आवश्यकता है तो आपको एक इंटरऑपरेबल प्रारूप जैसे एक्सएमएल या जेएसओएन का उपयोग करना होगा।

3

आप embedding IronPython को आजमा सकते हैं और वहां से अनपिकलिंग कर सकते हैं, फिर अनपिक्स्ड ऑब्जेक्ट को सी # एप्लिकेशन पर उपलब्ध करा सकते हैं।

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

यदि संभव हो तो आपको अपने डेटा को कुछ अन्य इंटरऑपरेबल तरीके (जैसे JSON या XML) को क्रमबद्ध करने का प्रयास करना चाहिए।

+0

हम सी # से पाइथन स्क्रिप्ट चलाते हैं जहां मैं काम करता हूं। मुझे आपको आवश्यक सटीक असेंबली नाम याद नहीं है (माइक्रोसॉफ्ट.स्क्रिप्टिंग मुझे लगता है)। – BenDundee

संबंधित मुद्दे