java - 在 Java 中排除 JSON 字符串中的特定字段
问题描述
我有一个 JSON 格式的字符串:
{"a":"val1", "b":"val2"}
我想过滤掉这个字段,比如a
在记录之前。可能有多个字段需要过滤,这些字段以前可能不知道。我正在研究 Gson 库的排除策略,但它无法识别字符串中的字段。
解决方案
如果您不使用 Spring,可以使用JsonView
:https ://github.com/monitorjbl/spring-json-view 来完成。
基本用法非常简单:
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import static com.monitorjbl.json.Match.match;
ObjectMapper mapper = new ObjectMapper();
SimpleModule module = new SimpleModule();
module.addSerializer(JsonView.class, new JsonViewSerializer());
mapper.registerModule(module);
mapper.writeValueAsString(JsonView.with(list)
.onClass(MyObject.class, match()
.exclude("contains"))
.onClass(MySmallObject.class, match()
.exclude("id"));
或者,如果您使用的是 Spring,则可以@JsonIgnore
在反序列化 JSON 时在要忽略的字段名称之前使用。例子:
@JsonIgnore
@JsonProperty(value = "user_password")
public String getUserPassword() {
return userPassword;
}
推荐阅读
- azure - 无法通过 Azure Bastion 通过虚拟机进行连接
- reactjs - Apollo graphQL 中的 useQuery 和 useLazyQuery 有什么区别?
- reactjs - 如何将会话中的电子邮件添加到reactjs中的表单中
- java - Selenium - Java - 从网站中提取文本而不改变结构
- ios - AVMutableComposition 不在模拟器上显示帧,但在设备上工作正常
- reactjs - 使用 prevState 语法在对象的对象内设置属性
- javascript - Adding 3 onclicks to one page
- react-native - React Native BackgroundTimer API Fetch respons more than once
- azure-ad-b2c - Azure AD B2C - Populating email in input claim from previous orchestration step and Verify.email not working alongwith
- jmeter - 在 jmeter 中运行 SOAP UI 时出现 404 错误