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
包。
當然,還有很多其他的方法可以自定義實現對象的轉換,比如通過流等方法,在此不過多贅述。