farm模块-图片转换
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
package cn.iocoder.yudao.module.farm.framework.json;
|
||||
|
||||
import com.fasterxml.jackson.core.JsonParser;
|
||||
import com.fasterxml.jackson.core.JsonToken;
|
||||
import com.fasterxml.jackson.databind.DeserializationContext;
|
||||
import com.fasterxml.jackson.databind.JsonDeserializer;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 支持字符串或字符串数组反序列化为逗号分隔的字符串
|
||||
*/
|
||||
public class StringOrArrayToStringDeserializer extends JsonDeserializer<String> {
|
||||
|
||||
@Override
|
||||
public String deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
|
||||
JsonToken currentToken = p.getCurrentToken();
|
||||
if (currentToken == JsonToken.VALUE_STRING) {
|
||||
return p.getValueAsString();
|
||||
}
|
||||
if (currentToken == JsonToken.START_ARRAY) {
|
||||
List<String> values = new ArrayList<>();
|
||||
while (p.nextToken() != JsonToken.END_ARRAY) {
|
||||
if (p.getCurrentToken() == JsonToken.VALUE_STRING) {
|
||||
values.add(p.getValueAsString());
|
||||
} else {
|
||||
// 跳过非字符串元素
|
||||
p.skipChildren();
|
||||
}
|
||||
}
|
||||
return values.stream().filter(s -> s != null && !s.isEmpty()).distinct().collect(Collectors.joining(","));
|
||||
}
|
||||
// 其他类型,跳过
|
||||
p.skipChildren();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user