主角:阿里巴巴的fastJson
1. 引入依赖(maven工程)
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.43</version>
</dependency>
2. json字符串转map
这是博主经常用的两种方式,比较实用
方式一:
@Test
public void test(){
String str="{\"name\":\"柳岩\",\"age\":\"18\",\"sex\":\"女\",\"address\":\"地球\"}";
Map map=(Map)JSON.parse(str);
System.out.println(map);
System.out.println(map.get("name"));
}
输出:
{“address”:“地球”,“sex”:“女”,“name”:“柳岩”,“age”:“18”}
柳岩
方式二:
@Test
public void test(){
String str="{\"name\":\"柳岩\",\"age\":\"18\",\"sex\":\"女\",\"address\":\"地球\"}";
Map map =JSON.parseObject(str,Map.class);
System.out.println(map);
System.out.println(map.get("name"));
}
输出:
{“address”:“地球”,“sex”:“女”,“name”:“柳岩”,“age”:“18”}
柳岩
3. json字符串转换为jsonObject
在将JSON转换成JSONObject类之后,便可从这个对象中获取每个字段的数据了
@Test
public void testJson(){
String str="{\"name\":\"柳岩\",\"age\":\"18\",\"sex\":\"女\",\"address\":\"地球\"}";
JSONObject jsonObject = JSON.parseObject(str);
System.out.println(jsonObject);
System.out.println(jsonObject.getString("name"));
}
输出:
{“address”:“地球”,“sex”:“女”,“name”:“柳岩”,“age”:“18”}
柳岩
4. Map转换String
这个也比较实用,简单粗暴
@Test
public void testMapToString(){
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("name","孙悟空");
map.put("age","19");
String str = JSON.toJSONString(map);
System.out.println(str);
}
输出:
{“name”:“孙悟空”,“age”:“19”}
5. Map转换Json
@Test
public void testMapToJson(){
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("name","柳岩");
map.put("age","19");
JSONObject jsonObject = new JSONObject(map);
System.out.println(jsonObject.getString("name")+"---"+jsonObject.getString("age"));
}
输出:
柳岩—19
6. bean转json
实体类Person:
public class Person {
private String name;
private String age;
private String sex;
private String address;
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age='" + age + '\'' +
", sex='" + sex + '\'' +
", address='" + address + '\'' +
'}';
}
public Person(){
}
public Person(String name, String age, String sex, String address) {
this.name = name;
this.age = age;
this.sex = sex;
this.address = address;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
测试:JSON.toJSONString()
@Test
public void testBean(){
Person person = new Person("刘德华","29","男","地球");
System.out.println(person.toString());
String str = JSON.toJSONString(person);
System.out.println(str);
}
输出:
Person{name=‘刘德华’, age=‘29’, sex=‘男’, address=‘地球’}
{“address”:“地球”,“age”:“29”,“name”:“刘德华”,“sex”:“男”}
7. Json转Bean
json字符串与javaBean之间的转换推荐使用 TypeReference 这个类,使用泛型可以更加清晰,当然也有其它的转换方式,这里就不做探讨了。
@Test
public void testJsonToBean(){
String str="{\"name\":\"柳岩\",\"age\":\"18\",\"sex\":\"女\",\"address\":\"地球\"}";
Person person = JSON.parseObject(str, new TypeReference<Person>() {});
//Person person = JSONObject.parseObject(str, new TypeReference<Person>() {});//因为JSONObject继承了JSON,所以这样也是可以的
System.out.println(person.toString());
}
输出:
Person{name=‘柳岩’, age=‘18’, sex=‘女’, address=‘地球’}