1、将Java对象转换为JSON字符串
当我们需要将Java对象转换为JSON字符串时,可以使用JSON.toJSONString()
方法。下面是一个简单的例子,展示如何使用JSON.toJSONString()
将一个Java对象转换为JSON字符串:
import com.alibaba.fastjson.JSON;public class Main {public static void main(String[] args) {Person person = new Person();person.setName("John Doe");person.setAge(30);String jsonString = JSON.toJSONString(person);System.out.println(jsonString);}
}
@Data
class Person {private String name;private int age;
}
在这个例子中,我们定义了一个名为Person
的Java类,并创建了一个Person
对象。然后,我们使用JSON.toJSONString()
方法将这个对象转换为JSON字符串,并打印输出。
运行上述代码,将会得到以下输出:
{"name":"John Doe","age":30}
2、将JSON字符串解析为指定类型的Java对象
JSON.parseObject()
方法是JSON
类中的一个静态方法,用于将JSON字符串解析为指定类型的Java对象。下面是一个简单的例子,展示如何使用JSON.parseObject()
方法将JSON字符串转换为Java对象:
import com.alibaba.fastjson.JSON;public class Main {public static void main(String[] args) {String jsonString = "{\"name\":\"John Doe\",\"age\":30}";Person person = JSON.parseObject(jsonString, Person.class);System.out.println(person.getName());System.out.println(person.getAge());}
}@Data
class Person {private String name;private int age;
}
在这个例子中,我们定义了一个名为Person
的Java类,并创建了一个包含JSON字符串的变量jsonString
。然后,我们使用JSON.parseObject()
方法将这个JSON字符串解析为Person
类型的Java对象,并打印输出该对象的属性值。
运行上述代码,将会得到以下输出:
John Doe
30
3、集合间的转换
集合转换为另一个集合可以使用JSON.parseArray()
方法。以下是示例代码:
import com.alibaba.fastjson.JSON;public class Main {public static void main(String[] args) {List<Person> persons = new ArrayList<>();persons.add(new Person("John", 30));persons.add(new Person("Doe", 28));List<Student> students = JSON.parseArray(JSON.toJSONString(persons), Student.class);System.out.println(JSON.toJSONString(students));}
}
@Data
class Person {private String name;private int age;Person(String name, int age) {this.name = name;this.age = age;}
}@Data
class Student {private String name;private int age;
}
在这个例子中,我们首先创建了一个包含两个Person
对象的List。然后,我们使用JSON.parseArray()
方法将这个集合解析为Student集合,并打印输出该学生List。
运行上述代码,将会得到以下输出:
[{"age":30,"name":"John"},{"age":28,"name":"Doe"}]
4、对象之间的复制转换
让我们来看一个使用BeanUtils.copyProperties()
方法的例子。假设我们有两个Java类Person
和Address
,它们分别表示一个人的信息和地址信息。这两个类之间有一些共同的属性,如姓名和年龄。我们想要从一个Person
对象复制这些共享属性到一个新的Address
对象上。
首先,导入org.springframework.beans.BeanUtils
包。然后编写如下代码:
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;@Component
public class BeanUtilsExample {@Autowiredprivate Person person;@Autowiredprivate Address address;public void copySharedProperties() {BeanUtils.copyProperties(person, address);}
}
在这个例子中,我们定义了一个名为BeanUtilsExample
的Spring组件,并在其中注入了两个Java类Person
和Address
的对象。然后,我们定义了一个名为copySharedProperties()
的方法,该方法使用BeanUtils.copyProperties()
方法来复制Person
对象中的共享属性到Address
对象中。
请注意,为了使这个例子能够正常工作,需要确保已经正确配置了Spring容器,并且已经正确注入了Person
和Address
对象。
5、自定义类型转换
基于一些基本方法,还可以自己定义一些新的转换copy方法。
比如基于JSON.toJSONString()
和JSON.parseArray()
可以实现一个更简洁的新的集合类型转换方法。convertBeanList()
方法实现。这个方法接受一个List
对象和一个目标类的泛型类型作为参数,并返回一个新的List
对象,其中包含了原始List
对象中所有元素的实例化版本,这些元素都是通过指定的目标类创建的。
以下是这个方法的示例代码:
import com.alibaba.fastjson.JSON;public class ConversionUtil {public static <T> List<T> convertBeanList(List list, Class<T> aclass) {String jsonStr = JSON.toJSONString(list);List<T> convertedList = JSON.parseArray(jsonStr, aclass);return convertedList;}
}
在这个例子中,我们首先使用JSON.toJSONString()
方法将原始List
对象转换为JSON字符串。然后,我们使用JSON.parseArray()
方法将这个JSON字符串解析为新的List
对象,并且确保其中的所有元素都是通过指定的目标类创建的。
请注意,为了使这个方法能够正常工作,你需要确保已经正确导入了com.alibaba.fastjson.JSON
包。
当然,还有很多其他的方法可以自定义实现对象的转换,比如通过流等方法,在此不过多赘述。