uni-app中type自定义类型里敏感字和符号用@JSON_FIELD处理,敏感字设为1的方法
uni-app中type自定义类型里敏感字和符号用@JSON_FIELD处理,敏感字设为1的方法
type自定义类型 中敏感字和符合用 @JSON_FIELD 敏感字为 数字 1 呢
1 回复
在 uni-app
中,如果你需要在自定义类型里处理敏感字和符号,并且使用 @JSON_FIELD
注解来进行序列化和反序列化,你可以通过自定义的序列化逻辑来实现将敏感字设为 1
的需求。下面是一个示例代码,展示了如何在 uni-app
中使用 @JSON_FIELD
注解处理敏感字,并在序列化过程中将敏感字替换为 1
。
首先,我们需要定义一个包含敏感字段的自定义类型,并使用 @JSON_FIELD
注解来指定自定义的序列化器和反序列化器。在这个例子中,我们将使用 fastjson
库,它是 uni-app
中常用的 JSON 处理库。
1. 引入依赖
确保你的项目中已经引入了 fastjson
库。如果没有,可以在 package.json
中添加依赖,或者使用 CDN 引入。
2. 自定义类型与注解
import com.alibaba.fastjson.annotation.JSONField;
import com.alibaba.fastjson.serializer.JSONSerializer;
import com.alibaba.fastjson.deserializer.ObjectDeserializer;
import com.alibaba.fastjson.parser.DefaultJSONParser;
import com.alibaba.fastjson.serializer.JSONSerializerFeature;
import com.alibaba.fastjson.serializer.ValueFilter;
public class SensitiveData {
@JSONField(serializeUsing = SensitiveSerializer.class, deserializeUsing = SensitiveDeserializer.class)
private String sensitiveWord;
// Getters and Setters
public String getSensitiveWord() {
return sensitiveWord;
}
public void setSensitiveWord(String sensitiveWord) {
this.sensitiveWord = sensitiveWord;
}
// Custom Serializer
public static class SensitiveSerializer implements ObjectSerializer {
@Override
public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType, int features) throws IOException {
SensitiveData data = (SensitiveData) object;
if ("敏感词".equals(data.getSensitiveWord())) { // 假设 "敏感词" 是我们要替换的敏感字
serializer.write(1);
} else {
serializer.write(data.getSensitiveWord());
}
}
}
// Custom Deserializer
public static class SensitiveDeserializer implements ObjectDeserializer {
@Override
public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {
JSONObject jsonObject = parser.parseObject();
SensitiveData data = new SensitiveData();
if (jsonObject.containsKey("sensitiveWord")) {
Object value = jsonObject.get("sensitiveWord");
if (value instanceof Integer && (Integer) value == 1) {
data.setSensitiveWord("敏感词"); // 反序列化时恢复为原始敏感字
} else {
data.setSensitiveWord(value.toString());
}
}
return (T) data;
}
@Override
public int getFastMatchToken() {
return 0;
}
}
}
3. 使用示例
SensitiveData data = new SensitiveData();
data.setSensitiveWord("敏感词");
String jsonString = JSON.toJSONString(data, SerializerFeature.PrettyFormat);
System.out.println(jsonString); // 输出: {"sensitiveWord":1}
SensitiveData deserializedData = JSON.parseObject(jsonString, SensitiveData.class);
System.out.println(deserializedData.getSensitiveWord()); // 输出: 敏感词
以上代码展示了如何在 uni-app
中使用 @JSON_FIELD
注解处理敏感字,并在序列化和反序列化过程中进行自定义处理。