fastjson 不格式 andorid中的Rect 的empt属性
时间: 2024-03-02 14:53:05 浏览: 128
如果您想在使用 fastjson 序列化 android.graphics.Rect 对象时,不将空的 Rect 值输出到 JSON 中,可以通过自定义序列化器来实现。以下是一个示例代码:
```java
import android.graphics.Rect;
import com.alibaba.fastjson.serializer.JSONSerializer;
import com.alibaba.fastjson.serializer.ObjectSerializer;
import com.alibaba.fastjson.serializer.SerializeWriter;
import java.io.IOException;
import java.lang.reflect.Type;
public class RectSerializer implements ObjectSerializer {
@Override
public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {
SerializeWriter out = serializer.getWriter();
Rect rect = (Rect) object;
if (rect.isEmpty()) {
out.writeNull();
} else {
out.writeFieldValue('{', "left", rect.left);
out.writeFieldValue(',', "top", rect.top);
out.writeFieldValue(',', "right", rect.right);
out.writeFieldValue(',', "bottom", rect.bottom);
out.write('}');
}
}
}
```
然后,您可以在序列化 Rect 对象时,指定使用该自定义序列化器:
```java
Rect rect = new Rect(0, 0, 0, 0);
SerializeWriter out = new SerializeWriter();
JSONSerializer serializer = new JSONSerializer(out);
serializer.put(Date.class, new RectSerializer()); // 注册自定义序列化器
serializer.write(rect);
System.out.println(out.toString()); // 输出 {}
```
在该示例代码中,如果 Rect 对象为空,将输出一个空的 JSON 对象 {}。如果 Rect 对象不为空,则输出其 left、top、right、bottom 属性对应的 JSON 字段。
阅读全文