Tag: jsonpath

从JSONArray获取元素时请保留双引号

我正在使用JsonPath从JSON文件中检索一个值。 JSON文件看起来像这样: [ { "username": "John", "password": { "passwordValue": "passwordjohn", "secret_key": "123" } }, { "username": "Nick", "password": { "passwordValue": "XXX", "secret_key": "ZZZ", "other_key": "YYY" } } ] 我正在使用的JsonPath是从特定的用户检索password 。 例: fun getPassword() { val passwords: JSONArray = read(jsonFile, "\$.[?(@.name==\"John\")].password") } 但是,我发现了两个障碍。 首先,我总是返回一个net.minidev.json.JSONArray ,并且追加[0]路径不起作用。 因此,我尝试从JSONArray获取唯一的元素,如下所示: credentials[0] 。 不幸的是,这将删除字段名称中的双引号,导致如下所示: {passwordValue: passwordjohn, secret_key: 123} 这是不可能的。 我正在寻找一种方法来解决这个问题: {"passwordValue": […]

默认值@ProjectedPayload / ProjectingJackson2HttpMessageConverter

我在接口上使用@ProjectedPayload将JSON请求主体绑定到我的接口的代理实例。 我的接口如下(在Kotlin中, val只是转化为Java getter): @ProjectedPayload interface ImportServer { val id: UUID? val name: String? } 现在,这里的id是完全可选的,但是至少据我所知,我没有办法指定它。 如果我尝试访问id属性,而不会出现在请求正文中,我将收到来自JsonPath的异常: com.jayway.jsonpath.PathNotFoundException: No results for path: $['id'] 。 如果我可以配置JsonPath,我可以使用Option.DEFAULT_PATH_LEAF_TO_NULL ,对于不存在的元素,我会得到null 。 但是,我没有办法得到JsonPath配置,它发生在JsonProjectingMethodInterceptorFactory里面。 有没有办法让我在这里指定一个默认值? 或者是有没有办法让我来检测是否存在id没有访问id属性的第一位?