5.2、Gson拾遗——对象中属性有选择性的序列化为json字符串

对象序列为json字符串时,可以指定对象中某些属性或者排除某些属性序列化为json字符串。Gson中提供了两种方式。

方式一

在要序列化的对象属性上用注解@Expose指定,并在创建Gson的时候,用excludeFieldsWithoutExposeAnnotation()激活注解。

public class Person {
    private int id;
    @Expose
    private String name;
    private String car;
    @Expose
    private int age;
    /*省略get/set/toString方法*/
}
    public static void main(String[] args) {
        GsonBuilder builder = new GsonBuilder();
        builder.excludeFieldsWithoutExposeAnnotation();
        Gson gson = builder.create();
        /*把Person对象序列化为json字符串*/
        Person person = new Person();
        person.setId(1);
        person.setName("lzj");
        person.setCar("baoma");
        person.setAge(27);
        String json = gson.toJson(person);
        System.out.println(json);
        System.out.println("--------------------------");
        /*把json字符串反序列化为Person对象*/
        Person person2 = gson.fromJson(json, Person.class);
        System.out.println(person2);
    }

运行程序,输出如下

{"name":"lzj","age":27}
--------------------------
Pseron [id=0, name=lzj, car=null, age=27]

从输出可以看出,只有name和age属性被序列化了。

方式二

在创建Gson时,开启excludeFieldsWithModifiers(),排除指定标识的属性即可。

```
public class Person {
    private int id;
    public String name;
    public String car;
    private int age;
    /*省略set/get/toString方法*/
public static void main(String[] args) {
    GsonBuilder builder = new GsonBuilder();
    /*序列化时排除private标识的属性*/
    builder.excludeFieldsWithModifiers(Modifier.PRIVATE);
    Gson gson = builder.create();
    /*把Person对象序列化为json字符串*/
    Person person = new Person();
    person.setId(1);
    person.setName("lzj");
    person.setCar("baoma");
    person.setAge(27);
    String json = gson.toJson(person);
    System.out.println(json);
    System.out.println("--------------------------");
    /*把json字符串反序列化为Person对象*/
    Person person2 = gson.fromJson(json, Person.class);
    System.out.println(person2);
}
运行程序,输出如下

{“name”:”lzj”,”car”:”baoma”}

Pseron [id=0, name=lzj, car=baoma, age=0]
“`

你可以使用Gson库来解析JSON字符串为Java对象。首先,你需要导入Gson库到你的项目。然后,可以按照以下步骤使用Gson来获取JSON字符串对象: 1. 创建一个包含JSON数据的字符串。 2. 创建一个Gson对象。 3. 使用fromJson()方法将JSON字符串解析为相应的Java对象。 下面是一个示例代码,演示了如何使用Gson获取JSON字符串对象: ```java import com.google.gson.Gson; public class Main { public static void main(String[] args) { // 创建包含JSON数据的字符串 String json = "{\"name\":\"John\", \"age\":30, \"city\":\"New York\"}"; // 创建Gson对象 Gson gson = new Gson(); // 使用fromJson()方法将JSON字符串解析为Java对象 Person person = gson.fromJson(json, Person.class); // 打印解析后的对象 System.out.println("Name: " + person.getName()); System.out.println("Age: " + person.getAge()); System.out.println("City: " + person.getCity()); } // 定义一个Person类,用于映射JSON数据 static class Person { private String name; private int age; private String city; public String getName() { return name; } public int getAge() { return age; } public String getCity() { return city; } } } ``` 在上述示例,我们首先创建一个包含JSON数据的字符串,然后创建了一个Gson对象。接下来,我们使用fromJson()方法将JSON字符串解析为Person对象。最后,我们打印了解析后的对象属性值。 请确保在代码修改Person类来适配你的JSON数据结构。希望这个示例可以帮助到你!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值