版权声明:作者已开启版权声明,如转载请注明转载地址。 https://blog.csdn.net/qq_34829447/article/details/82564354
之前作者开发过很长一段时间安卓,由于兴趣原因转向其他技术,最近需要安卓进行相关开发,故捡回来看看。本文主要介绍json与实体之间如何映射
1.前期准备
- 创建Person对象
package c.e.jsontobean;
public class Person {
private String name;
private int age;
private String company;
public Person(String name, int age, String company) {
this.name = name;
this.age = age;
this.company = company;
}
public Person() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getCompany() {
return company;
}
public void setCompany(String company) {
this.company = company;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", company='" + company + '\'' +
'}';
}
}
- 创建activity用于显示
- 安装gson
- 在build.gradle中的dependencies中添加
compile 'com.google.code.gson:gson:2.3.1'
2.核心代码
- MainActivity中的代码内容
package c.e.jsontobean;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private TextView source;
private Button toJson;
private Button toObject;
private TextView result;
private GsonBuilder builder;
private Gson gson;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
//初始化控件
public void init(){
source = (TextView)findViewById(R.id.source);
toJson = (Button)findViewById(R.id.toJson);
toObject = (Button)findViewById(R.id.toObject);
result = (TextView)findViewById(R.id.result);
toJson.setOnClickListener(this);
toObject.setOnClickListener(this);
builder = new GsonBuilder();
gson = builder.create();
}
//对按钮设置监听事件
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.toJson:
ObjectToJson();
break;
case R.id.toObject:
JsonToObject();
break;
}
}
//用于将json对象串映射到实体上的方法
public void JsonToObject() {
Person person = gson.fromJson(source.getText().toString(), Person.class);
result.setText(person.toString());
}
//用于将实体上的内容映射给json对象
public void ObjectToJson(){
Person person = new Person("Daming",22,"IBM");
String changed = gson.toJson(person,Person.class);
result.setText(changed);
}
}
操作流程
- 创建GsonBuilder并通过builder创建gson对象
builder = new GsonBuilder();gson = builder.create();
使用gson对象的fromJson方法将json映射到实体上
Person person = gson.fromJson(source.getText().toString(), Person.class);
使用gson对象的toJson方法将实体映射成json对象
- 创建GsonBuilder并通过builder创建gson对象
Person person = new Person("Daming",22,"IBM");
String changed = gson.toJson(person,Person.class);
3.最终效果图