কীভাবে কোনও স্ট্রিংকে জিএসএন লাইব্রেরি ব্যবহার করে জসনঅবজেক্টে রূপান্তর করবেন


95

দয়া করে পরামর্শ কিভাবে রূপান্তর করতে Stringকরতে JsonObjectব্যবহার gsonগ্রন্থাগার।

আমি ব্যর্থতার সাথে যা করি:

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

উত্তর:


174

আপনি যদি এটি ব্যবহার করতে চান তবে আপনি এটি একটি জাভাবীনে রূপান্তর করতে পারেন:

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

আরও নমনীয় জাসনঅবজেক্ট ব্যবহার করতে, নিম্নলিখিতটি ব্যবহার করুন:

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
এই উত্তরটি আসলে জিজ্ঞাসিত প্রশ্নের উত্তর দেয়।
জানিক জিকোভস্কি

4
jsonParser.parse (json) .getAsJsonObject ();
মাইক

JsonObject jo = jsonParser.parse(json).getAsJsonObject();এবংAssert.assertTrue(jo.get("Success").getAsBoolean());
smac89

46

এটি একটি সহজ উপায়ে করতে নীচে বিবেচনা করুন:

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

4
আপনার সম্ভবত লক্ষ্য করা উচিত যে এটি পূর্বে অন্য উত্তরের মন্তব্য হিসাবে পোস্ট করা হয়েছিল।
নাথান টগি

4
দুঃখিত তবে কোড বিন্যাস ছাড়াই .. মন্তব্যটি ফোকাসের বাইরে .. এবং এটি আসলে অন্যের চেয়ে ভাল উত্তর
অঙ্কিত বানসাল

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

আমি এটি করি, এবং এটি কাজ করে।


29

আপনার ব্যবহারের দরকার নেই JsonObject। আপনার জেসন স্ট্রিংগুলি এবং আপনার নিজের জাভা অবজেক্টগুলিতে / রূপান্তর করতে গসন ব্যবহার করা উচিত।

দেখুন 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]

(বিশৃঙ্খলা)

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)

38
তবে আমার জসনঅবজেক্ট ব্যবহার করা দরকার।
ইউজিন

4
কারণ আমার ক্লাসের একটি পদ্ধতিতে জাসনঅবজেক্টটি ফেরত আসা উচিত।
ইউজিন

4
@ অ্যান্ড্রয়েড: ... কেন? JsonObjectএকটি মধ্যবর্তী প্রতিনিধিত্ব। ব্যবহারের 99% ক্ষেত্রে আপনার জাভা অবজেক্ট হিসাবে বা JSON যুক্ত স্ট্রিং হিসাবে কেবল আপনার ডেটা উপস্থাপন করার বিষয়ে সত্যই যত্ন নেওয়া উচিত।
ম্যাট বল

95
আপনি প্রশ্নের উত্তর দেন না :) আপনি অবশ্যই একটি স্ট্রিংকে জসনঅবজেক্টে রূপান্তর করতে হবে এমন অবশ্যই কিছু ক্ষেত্রে রয়েছে।
অলিফ লারসন

4
@ ম্যাটবাল আয়ন এইচটিপি লাইব্রেরিতে ( github.com/koush/ion ) একটি জসনঅবজেক্টে একটি http অনুরোধের মূল অংশটি সেট করার জন্য একটি ফাংশন রয়েছে।
গেজ

8

দেখে মনে হচ্ছে উপরের উত্তরটি পুরোপুরি প্রশ্নের উত্তর দেয় নি।

আমি মনে করি আপনি নীচের মতো কিছু খুঁজছেন:

class TransactionResponse {

   String Success, Message;
   List<Response> Response;

}

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

যেখানে আমার প্রতিক্রিয়া এই জাতীয় কিছু:

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

আপনি দেখতে পাচ্ছেন, ভেরিয়েবলের নাম কী মান জোড়ায় কীটির জসন স্ট্রিং প্রতিনিধিত্বের মতো হওয়া উচিত। এটি স্বয়ংক্রিয়ভাবে আপনার জিসন স্ট্রিংটিকে জসনঅবজেক্টে রূপান্তর করবে।


4
আপনি কেন সদস্য ভেরিয়েবলগুলিতে বড় হাতের ব্যবহার করবেন? আপনি ডিফল্ট অ্যাক্সেস সংশোধক কেন ব্যবহার করবেন? আপনি যদি প্রতিক্রিয়াতে বড় হাতের অক্ষর চান তবে @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);



আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.