JSONObject存储对象属性,再toJSONString()转成json入参,㎡变成了m2,如何避免这种转换
时间: 2024-04-11 21:33:51 浏览: 11
要避免这种转换,你可以使用自定义的序列化和反序列化方法。可以通过实现`JSONAware`接口或者使用`JSON.toJSONString(Object, SerializerFeature)`方法来实现。
1. 实现`JSONAware`接口:
```java
import com.alibaba.fastjson.JSONAware;
import com.alibaba.fastjson.JSONObject;
public class MyClass implements JSONAware {
private int area;
public MyClass(int area) {
this.area = area;
}
@Override
public String toJSONString() {
JSONObject jsonObject = new JSONObject();
jsonObject.put("area", area + "㎡");
return jsonObject.toJSONString();
}
}
```
然后可以通过以下方式进行转换:
```java
MyClass obj = new MyClass(100);
String json = obj.toJSONString();
System.out.println(json);
```
这样就可以将面积的单位保留为"㎡"。
2. 使用`JSON.toJSONString(Object, SerializerFeature)`方法:
```java
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
public class MyClass {
private int area;
public MyClass(int area) {
this.area = area;
}
public String toJSONString() {
return JSON.toJSONString(this, SerializerFeature.WriteMapNullValue, SerializerFeature.BrowserCompatible);
}
}
```
然后可以通过以下方式进行转换:
```java
MyClass obj = new MyClass(100);
String json = obj.toJSONString();
System.out.println(json);
```
使用`SerializerFeature.BrowserCompatible`选项可以保留单位为"㎡"。
这些方法都可以避免面积单位被转换成"m2"。