问题:
我有一个服务,接受一个JSON
字符串作为输入。每当某些字段不总是存在时,JSON模式都不同。当这些字段存在时,我如何使用Jayway的JsonPath
查询它们的值?
我尝试过的:
我使用了选项。正如Jayway的自述页面所解释的,默认路径为空
Configuration config = Configuration.defaultConfiguration()
.addOptions(Option.DEFAULT_PATH_LEAF_TO_NULL);
if (JsonPath.isPathDefinite(attribute.jsonPath))
{
String value = JsonPath.using(config).parse(currentTx).read(attribute.jsonPath);
if (value != null)
{
attributeValues.add(value);
}
}
else
{
List<String> attributeValuesArray = JsonPath.using(config).parse(currentTx).read(attribute.jsonPath);
for (String value : attributeValuesArray)
{
if (value != null)
{
attributeValues.add(value);
}
}
}
这应该使JsonPath.read()
返回null
如果路径没有找到,但是我的代码仍然抛出:
通用域名格式。乱穿马路。jsonpath。PathNotFoundException:路径$['somepath'中缺少属性
当我给它一个不存在的路径。有人知道这可能是什么原因吗?
我意识到我做错了什么。DEFAULT_PATH_LEAF_TO_NULL
选项只处理叶节点。例如:
示例Json
{
"foo":{
"bar":"value"
}
}
如果查询$.foo.tmp
,JsonPath将返回null
,因为tmp应该是一个叶节点。
如果查询$.tmp.tmp2
,JsonPath将抛出一个
通用域名格式。乱穿马路。jsonpath。PathNotFoundException,因为tmp不是叶,也不存在。
要绕过此选项,应使用选项。抑制异常
。
我有一个问题。我想获取pin码,其中street=='abc strt'<我正在使用Jaway来实现这一点 jaywayxpath:,正在返回
我想使用可选实用程序在JDK8中执行空检查。这是我写的代码,给我一个错误: 这里可以显示或不显示“jcr:description”。如果它存在,我想在description变量中使用该值,如果为null,只需为description设置空白字符串。这里也可以使用Lambda表达式吗?谢谢
当使用Java8类时,有两种方法可以将值包装到Optional中。 我理解是使用的唯一安全方法,但为什么?为什么不直接使用
考虑一个和方法。我想将s映射到s并获得第一个。显而易见的解决方案是使用,但要求返回一个流,而没有方法(或者它是或提供一个方法将其转换为,或将其作为)查看。 我能想出的最好的办法是: 但这似乎是一个很普通的案例,但却显得太冗长了。谁有更好的主意?
我有一个需求,我需要更新JSON中的值。我需要更新的键的路径也是基于一些条件,所以我必须在属性文件中维护路径。这是我的JSON 现在我的要求是假设我需要更新pre_paid的值到N,但需要pre_paid的路径是动态的,因为有时我可能需要更新state_code或sort_code或pre_paid等。所以我使用JSONPath: 我需要将这些路径存储在一些属性文件/DB中。 我能够通过以下代码读
本文向大家介绍swift 可选型的使用详解,包括了swift 可选型的使用详解的使用技巧和注意事项,需要的朋友参考一下 一、基本用法 可选性是Swift提供的一个特殊类型,它为我们编写程序提供便利的条件 swift是强类型语言,当我们需要使用一个变量,既可以为String,也可以为nil时,这时候就需要我们使用可选型。 二、可选型解包使用 三、多层解包(**swift3.0有变化) 四、Opti