POJO

2014-11-20 5 views
12
से JSONObject बनाएं

मैं एक साधारण POJO बनाया:POJO

public class LoginPojo { 
    private String login_request = null; 
    private String email = null; 
    private String password = null; 

    // getters, setters 
} 

कुछ खोज मैं इस पाया करने के बाद: JSONObject jsonObj = new JSONObject(loginPojo);

लेकिन इस के साथ मैं त्रुटि मिली:

The constructor JSONObject(LoginPojo) is undefined 

मैं एक और पाया समाधान:

JSONObject loginJson = new JSONObject(); 
loginJson.append(loginPojo); 

लेकिन यह विधि मौजूद नहीं है।

तो मैं अपने POJO को JSON में कैसे परिवर्तित कर सकता हूं?

+0

क्या आपने jsonSerializer/de-serializer को देखा? – Vihar

+3

'जीएसओएन' लाइब्रेरी और 'gson.toJsonTree (yourObject) का उपयोग करने का प्रयास करें .getAsJsonObject() ' – EpicPandaForce

उत्तर

17

आप जावा Gson API का उपयोग करें:

Gson gson = new GsonBuilder().create(); 
String json = gson.toJson(obj);// obj is your object 

और फिर आप इस तरह इस json String से एक JSONObject बना सकते हैं,:

JSONObject jsonObj = new JSONObject(json); 

Gson user guide पर एक नजर डालें और इस SIMPLE GSON EXAMPLE अधिक जानकारी के लिए।

+4

लेखक ने पीओजेओ को JSONObject टाइप करने के लिए कहा, जीएसओ के साथ स्ट्रिंग (जेसन) स्ट्रिंग नहीं टाइप करने के लिए कहा। एक संकीर्ण अर्थ में, यह सवाल का जवाब नहीं दे रहा है। – Samuel

+0

@ सैमुएल इसे प्राप्त करना बहुत आसान है। आपको इस स्ट्रिंग को इस तरह के नए 'JSONObject' कन्स्ट्रक्टर में पास करने की आवश्यकता है:' JSONObject jsonObj = new JSONObject (json); या ** JSONParser ** '.parse()' विधि का उपयोग करना। –

+0

मुझे गलत मत समझो: मैं आपके उत्तर को वोट देने की वकालत नहीं कर रहा हूं। – Samuel

0

मैं अपने प्रोजेक्ट में जैक्सन का उपयोग करता हूं, लेकिन मुझे लगता है कि आपको खाली कन्स्ट्रक्टर की आवश्यकता है।

public LoginPojo(){ 
} 
3

Jackson आधारभूत इमारत ब्लॉक के रूप में JSON पार्सर/JSON जनरेटर प्रदान करता है; और वैकल्पिक एड-ऑन ब्लॉक के रूप में एक शक्तिशाली डाटाबेसर (JSON < -> POJO) और वृक्ष मॉडल जोड़ता है। इसका अर्थ यह है कि आप जेएसओएन को या तो टोकन (स्ट्रीमिंग एपीआई) की स्ट्रीम के रूप में पढ़ सकते हैं, सादा ओल्ड जावा ऑब्जेक्ट्स (पीओजेओ, डाटाबेस) या पेड़ (ट्री मॉडल) के रूप में। for more reference

आप अपनी परियोजना में Jackson कॉन्फ़िगर करने के लिए jackson-core-asl-x.x.x.jar, jackson-mapper-asl-x.x.x.jar पुस्तकालयों को जोड़ने के लिए है।

संशोधित कोड:

LoginPojo loginPojo = new LoginPojo(); 
ObjectMapper mapper = new ObjectMapper(); 

try { 
    mapper.setVisibility(JsonMethod.FIELD, Visibility.ANY); 

    // Setting values to POJO 
    loginPojo.setEmail("[email protected]"); 
    loginPojo.setLogin_request("abc"); 
    loginPojo.setPassword("abc"); 

    // Convert user object to json string 
    String jsonString = mapper.writeValueAsString(loginPojo); 

    // Display to console 
    System.out.println(jsonString); 

} catch (JsonGenerationException e){ 
    e.printStackTrace(); 
} catch (JsonMappingException e){ 
    e.printStackTrace(); 
} catch (IOException e){ 
    e.printStackTrace(); 
} 

Output : 
{"login_request":"abc","email":"[email protected]","password":"abc"} 
2

यह एक (gson) प्राप्त करने के लिए संभव है JSONObject POJO से:

JsonElement element = gson.toJsonTree(userNested); 
JsonObject object = element.getAsJsonObject(); 

उसके बाद आप object.entrySet() लेने के लिए और सभी पेड़ देख सकते हैं।

यह जीएसओएन में गतिशील रूप से बदलने के लिए एकमात्र बिल्कुल सही तरीका है जिसे आप वास्तव में देखना चाहते हैं।

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