Android对象传递:序列化、Intent与JSON详解

1 下载量 188 浏览量 更新于2024-08-29 收藏 72KB PDF 举报
在Android应用开发中,对象的传递是常见的需求,特别是在Activity与Fragment之间或跨进程通信时。本文主要探讨了三种常见的对象传递方法:序列化、通过Intent以及转化为JSON字符串。 1. 序列化传递 序列化是将对象的状态转换为可存储的形式,然后在网络或保存到其他地方,再恢复其原始状态的过程。在Android中,可以使用Java的`Serializable`和`Parcelable`接口来实现对象的序列化。以`Author`和`Book`类为例: ```java public class Author implements Serializable { private int id; private String name; // 其他属性... } public class Book implements Serializable { private String title; private Author author; // 其他属性... } ``` 当你需要传递一个`Book`对象时,首先创建对象实例,设置属性,然后将`Book`对象放入`Intent`的`putExtra()`方法中的`SerializableExtra`,如: ```java Book book = new Book(); book.setTitle("Java编程思想"); Author author = new Author(); author.setId(1); author.setName("Bruce Eckel"); book.setAuthor(author); Intent intent = new Intent(this, SecondActivity.class); intent.putExtra("book", book); startActivity(intent); ``` 在接收端,通过`getSerializableExtra()`方法获取并反序列化对象: ```java Book receivedBook = (Book) getIntent().getSerializableExtra("book"); Log.d(TAG, "book title: " + receivedBook.getTitle()); Log.d(TAG, "author name: " + receivedBook.getAuthor().getName()); ``` 2. JSON字符串传递 另一种方式是将对象转换为JSON字符串,这通常用于网络请求或非Android平台之间的数据交换。使用Gson库是一个常见做法。首先,需要定义类支持`Gson`序列化: ```java public class Author { private int id; private String name; // ... } public class Book { private String title; private Author author; // ... } ``` 创建对象后,可以使用`Gson`将其转换为JSON: ```java Gson gson = new Gson(); String json = gson.toJson(book); ``` 在接收端,再通过`fromJson()`方法将JSON字符串解析回对象: ```java Book bookFromJson = gson.fromJson(json, Book.class); ``` 总结来说,Android中传递对象有多种方法,包括序列化(利用`Serializable`或`Parcelable`接口)和JSON字符串转换(使用Gson库)。根据具体需求和场景选择合适的方法,例如对性能要求不高且在Android平台内部传递时,序列化可能更方便;而网络通信或跨平台交互时,JSON字符串更适用。