कैसे Gson पुस्तकालय का उपयोग कर एक स्ट्रिंग JsonObject में परिवर्तित करने के लिए


91

कृपया सलाह दें कि लाइब्रेरी Stringका JsonObjectउपयोग करके कैसे कन्वर्ट करें gson

मैं अनजाने में क्या करता हूं:

String string = "abcde";
Gson gson = new Gson();
JsonObject json = new JsonObject();
json = gson.toJson(string); // Can't convert String to JsonObject

जवाबों:


30

आपको उपयोग करने की आवश्यकता नहीं है JsonObject। आपको JSON स्ट्रिंग्स और अपने स्वयं के जावा ऑब्जेक्ट से / में कनवर्ट करने के लिए Gson का उपयोग करना चाहिए।

Gson उपयोगकर्ता गाइड देखें :

(क्रमबद्धता)

Gson gson = new Gson();
gson.toJson(1);                   // prints 1
gson.toJson("abcd");              // prints "abcd"
gson.toJson(new Long(10));        // prints 10
int[] values = { 1 };
gson.toJson(values);              // prints [1]

(Deserialization)

int one = gson.fromJson("1", int.class);
Integer one = gson.fromJson("1", Integer.class);
Long one = gson.fromJson("1", Long.class);
Boolean false = gson.fromJson("false", Boolean.class);
String str = gson.fromJson("\"abc\"", String.class);
String anotherStr = gson.fromJson("[\"abc\"]", String.class)

36
लेकिन मुझे JsonObject का उपयोग करने की आवश्यकता है।
यूजीन

3
क्योंकि मेरे वर्ग का एक तरीका JsonObject को वापस करना चाहिए।
यूजीन

3
@Android: ... क्यों? JsonObjectएक मध्यवर्ती प्रतिनिधित्व है। 99% उपयोग के मामलों में, आपको वास्तव में केवल जावा ऑब्जेक्ट के रूप में, या JSON युक्त स्ट्रिंग के रूप में अपने डेटा का प्रतिनिधित्व करने के बारे में ध्यान रखना चाहिए।
मैट बॉल

93
आप इस सवाल का जवाब नहीं देते हैं :) ऐसे कई मामले हैं जब आपको वास्तव में एक स्ट्रिंग को JsonObject में बदलने की आवश्यकता होती है।
ओलोफ लार्सन

3
@MattBall आयन http लाइब्रेरी ( github.com/koush/ion ) में एक HTTP अनुरोध के बॉडी को JsonObject पर सेट करने के लिए एक फंक्शन है।
गगेज

169

यदि आप उपयोग करना चाहते हैं, तो आप इसे JavaBean में बदल सकते हैं:

 Gson gson = new GsonBuilder().setPrettyPrinting().create();
 gson.fromJson(jsonString, JavaBean.class)

JsonObject का उपयोग करने के लिए, जो अधिक लचीला है, निम्नलिखित का उपयोग करें:

String json = "{\"Success\":true,\"Message\":\"Invalid access token.\"}";
JsonParser jsonParser = new JsonParser();
JsonObject jo = (JsonObject)jsonParser.parse(json);
Assert.assertNotNull(jo);
Assert.assertTrue(jo.get("Success").getAsString());

जो निम्नलिखित के बराबर है:

JsonElement jelem = gson.fromJson(json, JsonElement.class);
JsonObject jobj = jelem.getAsJsonObject();

"जोर" अतिरिक्त सामान हैं, यह परीक्षण के उद्देश्य के लिए है।
परेश मेयानी

9
यह उत्तर वास्तव में पूछे गए प्रश्न का उत्तर देता है।
Janik Zikovsky

5
jsonParser.parse (JSON) .getAsJsonObject ();
माइक

JsonObject jo = jsonParser.parse(json).getAsJsonObject();औरAssert.assertTrue(jo.get("Success").getAsBoolean());
smac89

44

इसे सरल तरीके से करने के लिए, नीचे विचार करें:

JsonObject jsonObject = (new JsonParser()).parse(json).getAsJsonObject();

3
आपको शायद ध्यान देना चाहिए कि यह पहले किसी अन्य उत्तर पर एक टिप्पणी के रूप में पोस्ट किया गया था।
नाथन तुग्गी

3
क्षमा करें, लेकिन कोड प्रारूप के बिना .. वह टिप्पणी ध्यान से बाहर है .. और यह वास्तव में दूसरों की तुलना में बेहतर उत्तर है
अंकित बंसल

27
String string = "abcde"; // The String which Need To Be Converted
JsonObject convertedObject = new Gson().fromJson(string, JsonObject.class);

मैं यह करता हूं, और यह काम करता है।


8

ऐसा लगता है कि उपरोक्त जवाब पूरी तरह से सवाल का जवाब नहीं दिया।

मुझे लगता है कि आप नीचे कुछ पसंद कर रहे हैं:

class TransactionResponse {

   String Success, Message;
   List<Response> Response;

}

TransactionResponse = new Gson().fromJson(response, TransactionResponse.class);

जहाँ मेरी प्रतिक्रिया कुछ इस तरह है:

{"Success":false,"Message":"Invalid access token.","Response":null}

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


1
आप सदस्य चर पर अपरकेस का उपयोग क्यों करते हैं? आप डिफ़ॉल्ट एक्सेस संशोधक का उपयोग क्यों करते हैं? यदि आप प्रतिक्रिया में अपरकेस चाहते हैं, तो @SerializedName("Success")इसके बजाय उदाहरण के लिए उपयोग करें ।
साइमन ज़ेटेरवैल

7
String emailData = {"to": "abc@abctest.com","subject":"User details","body": "The user has completed his training"
}

// Java model class
public class EmailData {
    public String to;
    public String subject;
    public String body;
}

//Final Data
Gson gson = new Gson();  
EmailData emaildata = gson.fromJson(emailData, EmailData.class);



हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.