Android中json与实体的映射

版权声明:作者已开启版权声明,如转载请注明转载地址。 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对象

Person person = new Person("Daming",22,"IBM");
String changed = gson.toJson(person,Person.class);

3.最终效果图

对象转成json
json转成对象

猜你喜欢

转载自blog.csdn.net/qq_34829447/article/details/82564354