Android对象传递:序列化、Intent与JSON详解
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字符串更适用。
2017-01-10 上传
2021-01-04 上传
2011-11-01 上传
2013-07-03 上传
2015-04-02 上传
2020-09-02 上传
2021-01-05 上传
2016-04-05 上传
2011-11-15 上传
weixin_38741030
- 粉丝: 3
- 资源: 924
最新资源
- IEEE 14总线系统Simulink模型开发指南与案例研究
- STLinkV2.J16.S4固件更新与应用指南
- Java并发处理的实用示例分析
- Linux下简化部署与日志查看的Shell脚本工具
- Maven增量编译技术详解及应用示例
- MyEclipse 2021.5.24a最新版本发布
- Indore探索前端代码库使用指南与开发环境搭建
- 电子技术基础数字部分PPT课件第六版康华光
- MySQL 8.0.25版本可视化安装包详细介绍
- 易语言实现主流搜索引擎快速集成
- 使用asyncio-sse包装器实现服务器事件推送简易指南
- Java高级开发工程师面试要点总结
- R语言项目ClearningData-Proj1的数据处理
- VFP成本费用计算系统源码及论文全面解析
- Qt5与C++打造书籍管理系统教程
- React 应用入门:开发、测试及生产部署教程