@JSONField
使用这个注解需要的依赖:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.59</version>
</dependency>
通常这注解是用来解决前端传递json数据到后端的时候因为json的key和ben的属性对应不上而接受不到数据
@JSONField注解一般有两种用法
一种是作用在ben的属性上
这种是通过@JSONField注解的name属性绑定ben的属性
package com.liyongyuan.www.model;
import com.alibaba.fastjson.annotation.JSONField;
/**
* @Description
* @Author hdt
* @Date 2021/09/14 11:27
*/
public class Car {
/**
* @JSONField
* 作用在属性上的时候
* 属性:name 作用 :绑定属性在ben转换成json格式的时候key的值就是name的值
* 在json转换成ben的时候key必须是name的值才能转换成功(这里的key不分大小写)
* ordinal 作用 :是在ben转换成json的时候key的顺序,默认的是按照属性的顺序,加上ordinal后顺序从0开始
*/
@JSONField(name = "NAME")
private String name;
@JSONField(name = "SIZE",ordinal =2)
private String size;
@JSONField(name = "PRICE",ordinal =1)
private int price;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSize() {
return size;
}
public void setSize(String size) {
this.size = size;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
@Override
public String toString() {
return "Car{" +
"name='" + name + '\'' +
", size='" + size + '\'' +
", price=" + price +
'}';
}
}
- ben在转换成json转换成的json字符串的key就是@JSONField的属性name的值
package com.liyongyuan.www;
import com.alibaba.fastjson.JSONObject;
import com.liyongyuan.www.model.Car;
import org.junit.Before;
import org.junit.Test;
/**
* @Description
* @Author hdt
* @Date 2021/09/14 14:10
*/
public class CarTest {
private Car car;
/**
* 初始化对象
*/
@Before
public void setCar(){
car = new Car();
car.setName("大众");
car.setSize("2");
car.setPrice(150000);
}
@Test
public void test(){
String jsonCar = JSONObject.toJSONString(car);
System.out.println("ben -> json字符串:"+jsonCar);
}
}
//输出结果为
ben -> json字符串:{"NAME":"大众","PRICE":150000,"SIZE":"2"}
- json字符串转化ben的时候,json字符串的key必须和ben上注解绑定的name的值一样才可以接到值
package com.liyongyuan.www;
import com.alibaba.fastjson.JSONObject;
import com.liyongyuan.www.model.Car;
import org.junit.Before;
import org.junit.Test;
/**
* @Description
* @Author hdt
* @Date 2021/09/14 14:10
*/
public class CarTest {
private Car car;
/**
* 初始化对象
*/
@Before
public void setCar(){
car = new Car();
car.setName("大众");
car.setSize("2");
car.setPrice(150000);
}
@Test
public void test(){
String s ="{\"PRICEs\":150000,\"NAMEs\":\"大众\",\"SIZEs\":\"2\"}";
JSONObject jsonObject = JSONObject.parseObject(s);
Car carS = JSONObject.toJavaObject(jsonObject, Car.class);
System.out.println(carS);
}
}
//输出结果
Car{name='null', size='null', price=0} 没有接受到数据
package com.liyongyuan.www;
import com.alibaba.fastjson.JSONObject;
import com.liyongyuan.www.model.Car;
import org.junit.Before;
import org.junit.Test;
/**
* @Description
* @Author hdt
* @Date 2021/09/14 14:10
*/
public class CarTest {
private Car car;
/**
* 初始化对象
*/
@Before
public void setCar(){
car = new Car();
car.setName("大众");
car.setSize("2");
car.setPrice(150000);
}
@Test
public void test1(){
String s ="{\"PRICE\":150000,\"NAME\":\"大众\",\"SIZE\":\"2\"}";
JSONObject jsonObject = JSONObject.parseObject(s);
Car carS = JSONObject.toJavaObject(jsonObject, Car.class);
System.out.println(carS);
}
}
//输出结果
Car{name='大众', size='2', price=150000}
一种是作用在get,set方法上
当注解@JSONField作用在get,set方法上的时候,是通过调用set,get方法进行josn和ben之间的转换的
package com.liyongyuan.www.model;
import com.alibaba.fastjson.annotation.JSONField;
/**
* @Description
* @Author hdt
* @Date 2021/09/14 15:25
*/
public class Phone {
private String names;
private String sizes;
private int prices;
/**
* @JSONField 注解作用在get方法上的时候
* 属性 name 作用:当ben转换成json字符串的时候,字符串的key就是name值
*
*/
@JSONField(name = "names")
public String getNames() {
return names;
}
/**
* @JSONField 注解作用在set方法的时候
* 属性 name 作用:当json字符串转换成bean的时候,字符串的值必须是和name的值一样(key不分大小写)
*
*/
@JSONField(name = "NAME")
public void setNames(String names) {
this.names = names;
}
@JSONField(name = "sizes")
public String getSizes() {
return sizes;
}
@JSONField(name = "SIZE")
public void setSizes(String sizes) {
this.sizes = sizes;
}
@JSONField(name = "prices")
public int getPrices() {
return prices;
}
@JSONField(name = "PRICE")
public void setPrices(int prices) {
this.prices = prices;
}
@Override
public String toString() {
return "Phone{" +
"names='" + names + '\'' +
", sizes='" + sizes + '\'' +
", prices=" + prices +
'}';
}
}
- 当作用在get方法上时,ben转换成json的时候,转换成的json格式的字符串的key是name的值。
package com.liyongyuan.www;
import com.alibaba.fastjson.JSONObject;
import com.liyongyuan.www.model.Phone;
import org.junit.Before;
import org.junit.Test;
/**
* @Description
* @Author hdt
* @Date 2021/09/14 15:45
*/
public class PhoneTest {
private Phone phone;
@Before
public void setPhone(){
phone = new Phone();
phone.setNames("华为");
phone.setPrices(5000);
phone.setSizes("20");
}
@Test
public void testPhone(){
String JsonPhone = JSONObject.toJSONString(phone);
System.out.println("转换成json字符串"+JsonPhone);
}
}
//输出结果
转换成json字符串{"names":"华为","prices":5000,"sizes":"20"}
- 当json字符串转换成ben的时候,json的key必须和name的值一样才可行不然就接不到数据
package com.liyongyuan.www;
import com.alibaba.fastjson.JSONObject;
import com.liyongyuan.www.model.Phone;
import org.junit.Before;
import org.junit.Test;
/**
* @Description
* @Author hdt
* @Date 2021/09/14 15:45
*/
public class PhoneTest {
private Phone phone;
@Before
public void setPhone(){
phone = new Phone();
phone.setNames("华为");
phone.setPrices(5000);
phone.setSizes("20");
}
@Test
public void testPhone1(){
String s="{\"names\":\"华为\",\"prices\":5000,\"sizes\":\"20\"}";
JSONObject jsonObject = JSONObject.parseObject(s);
phone = JSONObject.toJavaObject(jsonObject, Phone.class);
System.out.println(phone);
}
}
//输出结果
Phone{names='null', sizes='null', prices=0}
package com.liyongyuan.www;
import com.alibaba.fastjson.JSONObject;
import com.liyongyuan.www.model.Phone;
import org.junit.Before;
import org.junit.Test;
/**
* @Description
* @Author hdt
* @Date 2021/09/14 15:45
*/
public class PhoneTest {
private Phone phone;
@Before
public void setPhone(){
phone = new Phone();
phone.setNames("华为");
phone.setPrices(5000);
phone.setSizes("20");
}
@Test
public void testPhone1(){
String s="{\"NAME\":\"华为\",\"PRICE\":5000,\"SIZE\":\"20\"}";
JSONObject jsonObject = JSONObject.parseObject(s);
phone = JSONObject.toJavaObject(jsonObject, Phone.class);
System.out.println(phone);
}
}
//输出结果
Phone{names='华为', sizes='20', prices=5000}