Trong bài hướng dẫn ngắn này mình sẽ cùng bạn thực hiện 1 nhiệm vụ nho nhỏ là, chuyển 1 object sang json sau đó lưu vào database hay lưu vào SharedPreferences thì tuỳ bạn. Vì sau khi convert nó đã là String rồi thì làm gì cũng dễ.
Đầu tiên ta thêm thư viện Gson vào Gradle của module có tên là app trước
(có thể app dự án của bạn có nhiều file gradle của app khác).
implementation 'com.google.code.gson:gson:2.8.5'
Tiếp theo tạo ra 1 layout đơn giản chỉ có 1 nút bấm
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/jsonButton"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_marginStart="132dp"
android:layout_marginTop="56dp"
android:text="decode json"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
Khi click thì nó sẽ đổi ngược từ json sang object
Sau đó tạo 1 Activity như thế này
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import com.google.gson.Gson;
public class JsonDemo extends AppCompatActivity {
String myStringToSave;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.json_demo);
initBtn();
EyeObj obj1 = new EyeObj();
obj1.setWidth(10);
obj1.setHeight(5);
Gson gson = new Gson();
myStringToSave = gson.toJson(obj1);
}
void initBtn() {
Button btn = findViewById(R.id.jsonButton);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Gson gson = new Gson();
EyeObj getObj = gson.fromJson(myStringToSave,EyeObj.class);
Log.d("TAGGGGGGGGGGGG", String.valueOf(getObj.getHeight()));
}
});
}
public class EyeObj {
public float width;
public float height;
public float getWidth() {
return width;
}
public void setWidth(float width) {
this.width = width;
}
public float getHeight() {
return height;
}
public void setHeight(float height) {
this.height = height;
}
}
}
Trong Activity này, khi mở app thì nó sẽ tạo ra 1 đối tượng EyeObj và gán giá trị vào thuộc tính cho nó, sau đó convert nó thành json thông qua Gson của Google và lưu vào biến toàn cục để khi click vào nút thì mình sẽ chuyển ngược nó lại thành đối tượng (mục đích để test)
Để convert 1 ArrayList sang Json thì:
ArrayList<MyImg> jsoArray = new ArrayList<>();
jsoArray.add(new MyImg("1", "img1"));
jsoArray.add(new MyImg("2", "img2"));
jsoArray.add(new MyImg("3", "img3"));
String myStr = new Gson().toJson(jsoArray);
Để convert Json sang ArrayList thì:
Gson gson = new Gson();
ArrayList<MyImg> jsoArray = new ArrayList<>();
jsoArray = gson.fromJson(first.getName(), new TypeToken<ArrayList<MyImg>>() {}.getType());
for (int i = 0; i < jsoArray.size(); i++) {
MyImg aa = jsoArray.get(i);
Log.i(TAG,"" + aa.getImg());
}
Các bài viết không xem thì tiếc:
- Lập trình phóng to thu nhỏ ảnh pinch in – pinch out trong Android
- Lập trình với Recyclerview trong Android – Bài 2 | dotrinh.com
- Tạo seekbar và kiến thức hữu ích về seekbar trong Android
- Lập trình với Recyclerview trong Android – Bài 1 | dotrinh.com
- Cách dùng AsyncTask trong Android
- Truyền dữ liệu giữa 2 fragment trong android
- Tạo icon cho app trong android
- Lập trình với Recyclerview trong Android – Bài 3 | dotrinh.com
- Làm việc với font trong Android
- Làm sao thiết kế nhiều màn hình trong Android
- Show Indicator trong Android | Hiển thị indicator trong Android
- Siêu tổng hợp android code snippets (cập nhật thường xuyên)
- Hiểu về cách tổ chức file, bộ nhớ của app Android
- Phóng to thu nhỏ trong Android với ScaleGestureDetector
- Lưu ý với hàm drawText() trong Android