2010-04-01 11 views
5

मैं एक जावास्क्रिप्ट ऑब्जेक्ट का उपयोग कॉन्फ़िगरेशन गुणों वाले ऑब्जेक्ट के रूप में कर रहा हूं। ईजी। मैं जावास्क्रिप्ट में इस वस्तु है:राइनो: ScriptableObject से सभी गुण कैसे प्राप्त करें?

var myProps = {prop1: 'prop1', prop2: 'prop2', 'prop3': 'prop3'}; 

इस वस्तु (NativeObject) जावा समारोह में मेरे लिए दिया जाता है। ईजी।

public Static void jsStaticFunction_test(NativeObject obj) { 
    //work with object here 
} 

मैं वस्तु से सभी गुण हो और इसे से HashMap का निर्माण करना चाहते।

किसी भी मदद की सराहना की जाएगी।

उत्तर

2

अच्छी तरह से, अगर आप करीब देखा, तो आप देखा होगा कि NativeObject मानचित्र इंटरफ़ेस लागू करता है, तो आप बहुत अच्छी तरह से काम कर सकते थे NativeObject साथ .... लेकिन आपके सवाल का जवाब देने के लिए: आप आम दृष्टिकोण किसी भी नक्शे

for (Entry<Object, Object> e : obj.entrySet()){ 
    mapParams.put(e.getKey().toString(), e.getValue().toString()); 
} 

एक डाली मधुमक्खी होता की कुंजी-मान जोड़ों प्राप्त करने के लिए इस्तेमाल किया जा सकता था आपके मामले के लिए पर्याप्त है, क्योंकि आपके पास केवल मूल्यों के रूप में तार हैं। तो, अगर तुम सच में एक HashMap चाहता था:

HashMap<String, String> mapParams = new HashMap<String, String>((Map<String,String>)obj); //if you wanted a HashMap 

लेकिन अगर आप सिर्फ एक सामान्य मानचित्र चाहता था, तो यह और भी आसान था, और कम रैम लेने वाली:

Map<String, String> mapParams = (Map<String,String>)obj; 
10

तो, मैं मेरी समस्या :) हल

कोड:

public static void jsStaticFunction_test(NativeObject obj) { 
    HashMap<String, String> mapParams = new HashMap<String, String>(); 

    if(obj != null) { 
     Object[] propIds = NativeObject.getPropertyIds(obj); 
     for(Object propId: propIds) { 
      String key = propId.toString(); 
      String value = NativeObject.getProperty(obj, key).toString(); 
      mapParams.put(key, value); 
     } 
    } 
    //work with mapParams next.. 
} 
संबंधित मुद्दे