অ্যান্ড্রয়েডে JSON এ অবজেক্টটি রূপান্তর করুন


129

অ্যান্ড্রয়েডে কোনও বিষয়কে JSON এ রূপান্তর করার জন্য কি কোনও সহজ পদ্ধতি আছে?

উত্তর:


271

বেশিরভাগ লোকেরা জিএসএন ব্যবহার করছেন: এটি পরীক্ষা করে দেখুন

Gson gson = new Gson();
String json = gson.toJson(myObj);

15
এবং জ্যাকসনও।
মোবি

4
কেন জসনের জন্য আমাদের এম্বেড পদ্ধতি নেই? তবে আমাদের কাছে জেসন রয়েছে?
এম

তারা এটি আছে gson ব্যবহার করার চেষ্টা করুন।
gumuruh

57
public class Producto {

int idProducto;
String nombre;
Double precio;



public Producto(int idProducto, String nombre, Double precio) {

    this.idProducto = idProducto;
    this.nombre = nombre;
    this.precio = precio;

}
public int getIdProducto() {
    return idProducto;
}
public void setIdProducto(int idProducto) {
    this.idProducto = idProducto;
}
public String getNombre() {
    return nombre;
}
public void setNombre(String nombre) {
    this.nombre = nombre;
}
public Double getPrecio() {
    return precio;
}
public void setPrecio(Double precio) {
    this.precio = precio;
}

public String toJSON(){

    JSONObject jsonObject= new JSONObject();
    try {
        jsonObject.put("id", getIdProducto());
        jsonObject.put("nombre", getNombre());
        jsonObject.put("precio", getPrecio());

        return jsonObject.toString();
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        return "";
    }

}

1
আমি এইভাবে পছন্দ করি, প্রতিটি বস্তুর নিজস্ব স্ট্রিংফাই পদ্ধতি রয়েছে, অন্তর্দৃষ্টিটির জন্য আপনাকে ধন্যবাদ!
ভীমিম

10

আরও ভাল পছন্দ হতে পারে:

@Override
public String toString() {
    return new GsonBuilder().create().toJson(this, Producto.class);
}

কেন এটি একটি ভাল পছন্দ?
নেরিয়া নাচুম

1
কোনও বিষয়টিকে জেএসএন স্ট্রিংয়ে রূপান্তর করতে সক্ষম হওয়ার অর্থ এই নয় যে আপনি অবজেক্টের স্ট্রিং প্রতিনিধিত্ব সর্বদা জেএসএন করুন।
থিজার

@ নেরিয়ানাচুম, বিষয়টি যখন আমার মনে ছিল তখন আমি অনেক গুণাবলীর সাথে একটি ক্লাস করার উত্তর দিয়েছিলাম। toString()অ্যান্ড্রয়েড স্টুডিও বা ইন্টেলিজ আইডিয়া দ্বারা উত্পাদিত - যখন আপনি ডিফল্ট উপায়ে মুদ্রণ করেন তখন এর পদ্ধতিটি ওভাররাইড করা অনেকগুলি স্ট্রিং অবজেক্ট তৈরি করে - তবে, এটি কোডের একটি লাইন এবং জিসনবিল্ডারের শক্তি ব্যবহার করে।
হেসাম

@ থিজার, আপনি একেবারে ঠিক বলেছেন। আমি ভাবছিলাম এটি বিকাশকারীদের দ্বারা ভাগ করা এবং দেখা ভাল (যারা কমপক্ষে পদ্ধতির সাথে পরিচিত নয়)। তারপরে তারা যখনই প্রয়োজন তাদের ব্যবহার করবে।
হেসাম

রূপান্তরটি রূপান্তরটি মডেল থেকে নিজেই পরিচালনা করা যেতে পারে, বাস্তবায়নটিকে বিমূর্ত করে তুলে এটিকে আরও ভাল পছন্দ বলে মনে করি।
adnaan.zohran

4

অ্যান্ড্রয়েডের জন্য বসন্ত সহজেই রেস্টস্টেমলেট ব্যবহার করে এটি করুন:

final String url = "http://192.168.1.50:9000/greeting";
RestTemplate restTemplate = new RestTemplate();
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
Greeting greeting = restTemplate.getForObject(url, Greeting.class);

আপনার ম্যাপিংজ্যাকসন 2 এইচটিটিপি ম্যাসেজ কনভার্টারটিকে রেস্টটেম্পলেট যুক্ত করার দরকার নেই, যদি জ্যাকসন জার ক্লাসপথে থাকে তবে এটি স্বয়ংক্রিয়ভাবে যুক্ত হয়।
ক্লাউস গ্রোয়েনবেক

2

অ্যান্ড্রয়েড 3.0.০ (এপিআই লেভেল ১১) অ্যান্ড্রয়েডে আরও সাম্প্রতিক ও উন্নত জেএসএন পার্সার রয়েছে।

http://developer.android.com/reference/android/util/JsonReader.html

টোকেনের একটি স্রোত হিসাবে একটি জেএসএন (আরএফসি 4627) এনকোড করা মান পড়ে। এই স্ট্রিমের মধ্যে উভয় আক্ষরিক মান (স্ট্রিং, সংখ্যা, বুলিয়ানস এবং নালস) পাশাপাশি অবজেক্ট এবং অ্যারেগুলির শুরু এবং শেষ সীমানার অন্তর্ভুক্ত রয়েছে। টোকেনগুলি গভীরতা-প্রথম ক্রমে বিভক্ত হয়, একই আদেশে তারা JSON নথিতে উপস্থিত হয়। JSON অবজেক্টের মধ্যে নাম / মান জোড়া একক টোকেন দ্বারা প্রতিনিধিত্ব করা হয়।


1
এটি যা জিজ্ঞাসা করা হয়েছিল তার বিপরীত।
ম্যাথু পড়ুন

2

গ্র্যাড্রিয়াল গ্র্যাডল ডাউনলোড করুন:

compile 'com.google.code.gson:gson:2.8.2'

একটি পদ্ধতিতে গ্রন্থাগারটি ব্যবহার করা।

Gson gson = new Gson();

//transform a java object to json
System.out.println("json =" + gson.toJson(Object.class).toString());

//Transform a json to java object
String json = string_json;
List<Object> lstObject = gson.fromJson(json_ string, Object.class);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.