2012-03-29 22 views
18

मैं अपने एंड्रॉइड डिवाइस के लिए एक नेस्टेड JSON ऑब्जेक्ट प्रोग्राम करना चाहता हूं, लेकिन कैसे? मैं Json के साथ ही बुनियादी अनुभव है, इसलिए यदि कोई मुझे निम्न कोड के साथ मदद कर सकता है मुझे खुशी होगी:जावा में नेस्टेड जेसन ऑब्जेक्ट कैसे बनाएं?

{ 
"command": "login", 
"uid": "123123123", 
"params": 
    { 
    "username": "sup", 
    "password": "bros" 
    } 
} 

संपादित करें:

निम्नलिखित कोड समस्या को हल करता है:

loginInformation = new ArrayList<NameValuePair>(); 

JSONObject parentData = new JSONObject(); 
JSONObject childData = new JSONObject(); 

try { 

    parentData.put("command", "login"); 
    parentData.put("uid", UID.getDeviceId()); 

    childData.put("username", username.getText().toString()); 
    childData.put("password", password.getText().toString()); 
    parentData.put("params", childData); 

} catch (JSONException e) { 
    e.printStackTrace(); 
} 

loginInformation.add(new BasicNameValuePair("content", parentData.toString())); 
+1

आप सेवा json का उपयोग कर के साथ संवाद करने की कोशिश करते हैं? क्या आपको वास्तव में इतनी भिन्न संरचना भेजने की ज़रूरत है? –

+7

क्या आप मुझसे मजाक कर रहे हैं? एक नेस्टेड JSON ऑब्जेक्ट भेजने के साथ इतना मुश्किल क्या है !? – Xarialon

+1

बस मुझे क्या चाहिए !! धन्यवाद @ एक्सरियल –

उत्तर

5

आपको JSON बनाने की आवश्यकता है, और को अपने POST में पैरामीटर के रूप में जोड़ें। कि आप शायद चाहिए करने के लिए:

post.add(new BasicNameValuePair("data",json.toString()); 

आप org.json.JSONObject इस्तेमाल कर सकते हैं, यह Android SDK में शामिल है।

+1

धन्यवाद, मेरा मतलब बहुआयामी के बजाय घोंसला था। :) – Xarialon

+0

@ ओविडिउ लातुकू कृपया मेरे प्रश्न की जांच करें http://stackoverflow.com/questions/15171454/sending-complex-json-object – bCliks

+0

@ ओविडिउलाटकु क्या आप कृपया मेरा प्रश्न जांच सकते हैं [http://stackoverflow.com/questions/42024158/कैसे-से-पहुंच-गीथब-ग्राफक्ल-एपीआई-उपयोग-जावा] –

1

BasicNameValuePair जो आप POST पैरामीटर जोड़ने के लिए उपयोग करते हैं। यह थोड़ा अस्पष्ट है कि आप क्या पूछ रहे हैं। क्या आप पूछ रहे हैं कि JSON को पोस्ट पैरामीटर के रूप में param मान सबमिट करने के लिए कैसे दिया गया है?

आप पहली बार, JSON पार्स करने के लिए तो मापदंडों बाहर खींच, फिर उन्हें प्रपत्र पोस्ट में जोड़ने, इस तरह की जरूरत है,

JSONObject jo = new JSONObject(jsonString); 
JSONObject joParams = jo.getJSONObject("params"); 
String username = joParams.getString("username"); 

post.add(new BasicNameValuePair("username",username); 

आप निश्चित रूप से JSON की जाँच कर सुनिश्चित करने के लिए है चाहता हूँ पैराम ऑब्जेक्ट मौजूद है, और यह सुनिश्चित करने के लिए कि उपयोगकर्ता नाम पैरामीटर निकलता है।

0

यदि आप सर्वर पर JSON का एक ब्लॉक भेजना चाहते हैं तो आपको मुख्य मान जोड़े का उपयोग नहीं करना चाहिए, बल्कि डेटा को StringEntity के रूप में पोस्ट करना चाहिए।

HttpPost request = new HttpPost(api_call); 

    request.setHeader("Content-Type", "text/javascript"); 
    request.setEntity(new StringEntity(jsonString); 

    httpClient.execute(request); 
1

जेसन के लिए मॉडल क्लास बनाएं, इसे अपने डेटा से प्रारंभ करें। फिर Google जीसन का उपयोग जेसन से जेसन से ऑब्जेक्ट में कनवर्ट करने के लिए करें। और यहां दो लिंक भी हैं जो जेसन का उपयोग करने के लिए आपके जीवन को अधिक आसान बनाते हैं। ऑनलाइन जेसन संपादक। आप जांच सकते हैं कि जेनरेट जेसन सही प्रारूप में है या नहीं। http://www.jsoneditoronline.org/ और JSON जनरेट किया POJO के लिए (मॉडल कक्षा जेनरेटर) http://www.jsonschema2pojo.org/

+0

धन्यवाद मलिक! यह एक बहुत पुराना सवाल था। जब मैंने एंड्रॉइड प्रोग्रामिंग सीखना शुरू किया तो मैं इसका इस्तेमाल करता हूं। :) – Xarialon

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