@JSONField作用在Field时,其name不仅定义了输入key的名称,同时也定义了输出的名称。代码如下:
package com.xx.test;
import com.alibaba.fastjson.annotation.JSONField;
public class CRMWorkOrderModel {
@JSONField(name = "work_order_id")
private String work_order_id;
@JSONField(name = "Name")
private String name;
public String getWork_order_id() {
return work_order_id;
}
public void setWork_order_id(String work_order_id) {
this.work_order_id = work_order_id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
当作用在setter方法上时,就相当于根据 name 到 json中寻找对应的值,并调用该setter对象赋值。
当作用在getter上时,在bean转换为json时,其key值为name定义的值。实例如下:
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.annotation.JSONField;
public class Product {
private String productName;
private String desc;
private String price;
@JSONField(name="name")
public String getProductName() {
return productName;
}
@JSONField(name="NAME")
public void setProductName(String productName) {
this.productName = productName;
}
@JSONField(name="desc")
public String getDesc() {
return desc;
}
@JSONField(name="DESC")
public void setDesc(String desc) {
this.desc = desc;
}
@JSONField(name="price")
public String getPrice() {
return price;
}
@JSONField(name="PRICE")
public void setPrice(String price) {
this.price = price;
}
public String toString() {
return JSONObject.toJSONString(this);
}
}
import org.java.json.fastjson.bean.Product;
import org.junit.Test;
import com.alibaba.fastjson.JSONObject;
/**
* 对fastjson中的JSON转换做一个测试
* @author xianglj
*/
public class JsonObjectTest {
public static void main(String[] args) {
Product product = new Product();
product.setProductName("产品");
product.setDesc("这是一个产品");
product.setPrice("22.3");
String jsonStr = JSONObject.toJSONString(product);
System.out.println("转换为json:" + JSONObject.toJSONString(product));
//jsonStr = jsonStr.toUpperCase();
System.out.println(jsonStr);
product = JSONObject.toJavaObject(JSONObject.parseObject(jsonStr), Product.class);
System.out.println(product.toString());
}
@Test
public void test() {
Product product = new Product();
product.setProductName("产品");
product.setDesc("这是一个产品");
product.setPrice("22.3");
String jsonStr = JSONObject.toJSONString(product);
System.out.println("转换为json:" + JSONObject.toJSONString(product));
jsonStr = jsonStr.toUpperCase();
System.out.println(jsonStr);
product = JSONObject.toJavaObject(JSONObject.parseObject(jsonStr), Product.class);
System.out.println(product.toString());
}
}
转换为json:{"desc":"这是一个产品","name":"产品","price":"22.3"}
{"DESC":"这是一个产品","NAME":"产品","PRICE":"22.3"}
{"desc":"这是一个产品","name":"产品","price":"22.3"}
我们在转换bean时,就不需要在手工方式,为不能转换的属性进行赋值。即使以后返回数据反生变化,也能够快速的进行修改。不用修改大片代码。只需要修改注解name值就可以了