2017-02-08 14 views
16

में पायथन ट्यूपल मैं जावा xmlrpc पर पायथन ट्यूपल पास करने की कोशिश कर रहा हूं। यहां लाइब्रेरी है जिसका मैं उपयोग कर रहा हूं: XMLPRC Java Librayजावा एक्सएमएलआरपीसी

मैं सर्वर पर odoo ढांचे का उपयोग कर रहा हूं और api

[[4:

[(4,7), (4,8)]

मैं निम्नलिखित संरचना पारित करने में सक्षम हूँ: मैं तर्क लग रहा होगा जो की तरह पास करना चाहते हैं , 7], [4,8]]

जो स्पष्ट रूप से की तरह सरणी के अंदर सरणी है:

new Object[]{new Object[]{4,7},new Object[]{4,8}} 
समस्या

वहाँ मैं है जावा में कोई tuple नहीं है। क्या मैं अवशोषित कैसे इस संरचना को बदलने के लिए है:

यह [4,8] यह करने के लिए (4,8)

यह क्रमबद्धता मुद्दा किसी तरह का कैसे हल करने के लिए पता नहीं है क्या है यह और अपेक्षित पायथन संरचना पास।

+1

क्या आपको xmlrpc कॉल करने का प्रयास करते समय कोई त्रुटि हो रही है? साथ ही, अपने पुस्तकालय के दस्तावेज़ों पर उपयोग किए जा सकने वाले डेटा प्रकारों की जांच करें। –

+0

क्या आप '(ए, बी)' को परिभाषित करने के लिए एक नई कक्षा की तलाश में हैं, जैसे कि http: //stackoverflow.com/questions/10234487/storing-number-pairs-in-java? Noredirect = 1 और lq = 1'? – Gang

उत्तर

0

एक साधारण विचार इसे स्ट्रिंग के रूप में भेजना है। बस जावा में यह पसंद:

String a="[[4,7],[4,8]]"; 

अजगर, आप बस सरणियों की सरणी के रूप में इसे पाने के लिए eval() विधि का उपयोग कर सकते हैं। आप tuples की सरणी के रूप में यह चाहते हैं, का उपयोग करें:

String a="[(4,7),(4,8)]"; 

बस स्ट्रिंग के रूप में अजगर सिंटैक्स का उपयोग करें। अजगर में, आप उपयोग कर सकते हैं:

my_list=eval(a) 
print my_list[0] 

यह दे देंगे:

(4,7) 

पिछले उदाहरण के लिए उत्पादन के रूप में।

+1

आप JSON का उपयोग करने पर भी विचार कर सकते हैं। –

+0

समस्या यह है कि मैं सर्वर साइड कोड नहीं बदल सकता –

1

[[4,7],[4,8]] के साथ कोई समस्या है? अधिकांश पायथन परिचालन वास्तविक सूचियों से tuples अलग नहीं है। और ओडू में भी कम। मुझे लगता है कि यह उन भाषाओं के माध्यम से tuples की एक सूची भेजने का उचित तरीका है जो tuples को लागू नहीं करता है। टुपल एक महत्वपूर्ण, मूल्य चीज़ नहीं है। आपके पास (a, b, c) हो सकता है जो एक टुपल है। यह कुछ हद तक [a, b, c] के समान है। आप दोनों पर फिर से कर सकते हैं। आप इंडेक्स के माध्यम से अपना मूल्य प्राप्त कर सकते हैं (यदि दोनों को element चर में संग्रहीत किया गया था, तो a प्राप्त करने से element[0] दोनों उनके लिए होंगे)।

इसलिए यदि आपको कोई समस्या है, तो मुझे नहीं लगता कि यह टुपल्स के बारे में है और आपने टिप्पणी का जवाब नहीं दिया है कि क्या XMLRPC कॉल पर कोई त्रुटि है या नहीं। मेरा अनुमान है कि कोई त्रुटि नहीं है। और यदि कोई त्रुटि है, तो मुझे यकीन है कि यह tuples के बारे में नहीं है।

0

एक्सएमएल-आरपीसी सीमित है। तो, सूची और टुपल दोनों के लिए केवल एक ही प्रकार है। यदि आप odoo के लिए दस्तावेज़ देखते हैं तो आप देखेंगे कि पायथन उदाहरणों में दोनों tuples और सूचियां जावा में Arrays.asList में बदल जाती हैं। इसलिए, अगर आपको कुछ त्रुटियां मिलती हैं तो अच्छी संभावना है कि कुछ और गलत है

0

क्या आपने अपाचे कॉमन्स जोयर क्लास का उपयोग करने का प्रयास किया था? Docs

बस एक त्वरित परीक्षण किया और ऐसा लगता है कि आप क्या चाहते हैं।

System.out.println(new ImmutablePair<>(1,3).toString()); 
    (1,3) 

डिफ़ॉल्ट serializer चाहिए उत्पादन जोड़ी [] में [(1,2), ...] प्रारूप आप उम्मीद करते हैं।

0

लंबे समय तक खोज करने के बाद, मुझे समाधान मिला। तो मैंने इसे स्पष्ट रूप से जवाब देने का फैसला किया। मेरा जवाब ओडू पक्ष की संभावना है। अब तक मुझे उस संरचना को क्रमबद्ध करने का कोई रास्ता नहीं मिला।

[ [ 4, [7,8] ] 

या

Arrays.asList(Arrays.asList(4, Arrays.asList(7,8))); 

इस के बराबर है:: लेकिन ओडो फ्रेम निम्नलिखित तरीके से टपल स्वीकार किए जाते हैं

[(4,3),(4,7)] 

आशा इस किसी की मदद करेंगे।