ParseProcess
时间: 2023-11-18 11:02:54 浏览: 175
pmu.rar_The Process
ParseProcess是fastjson中的一个接口,用于定制反序列化过程。它可以通过实现ExtraProcessor和ExtraTypeProvider接口来处理多余的字段和提供类型信息。下面是使用ExtraProcessor处理多余字段的示例代码:
```java
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.parser.DefaultJSONParser;
import com.alibaba.fastjson.parser.JSONLexer;
import com.alibaba.fastjson.parser.JSONToken;
import com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;
import java.lang.reflect.Type;
import java.util.HashMap;
import java.util.Map;
public class MyExtraProcessor implements ExtraProcessor {
@Override
public void processExtra(Object object, String key, Object value) {
if (object instanceof VO) {
VO vo = (VO) object;
vo.getAttributes().put(key, value);
}
}
}
public class VO {
private int id;
private Map<String, Object> attributes = new HashMap<String, Object>();
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Map<String, Object> getAttributes() {
return attributes;
}
@Override
public String toString() {
return "VO [id=" + id + ", attributes=" + attributes + "]";
}
}
public class Test {
public static void main(String[] args) {
String json = "{\"id\":1,\"name\":\"test\",\"age\":20}";
VO vo = JSON.parseObject(json, VO.class, new MyExtraProcessor());
System.out.println(vo);
}
}
```
在上面的示例代码中,我们定义了一个MyExtraProcessor类,实现了ExtraProcessor接口的processExtra方法,用于处理多余的字段。然后在VO类中定义了一个Map类型的attributes属性,用于存储多余的字段。最后在Test类中,我们使用JSON.parseObject方法解析json字符串,并传入MyExtraProcessor对象作为第三个参数,来处理多余的字段。运行上面的代码,输出结果为:
```
VO [id=1, attributes={name=test, age=20}]
```
阅读全文