你好! 在使用fastjson的JSONPath时,发现如下问题:
1、有一个类Person,
static class Person{
private String name;
private String id;
//get set...
}
2、实例化该类后将id和name的值设置为同一个值,假设值都设置为“id”,而后用JSONPath.paths(Object obj)解析该实例,如下。得到的path只有"/"和"/id",没有"/name"。个人觉得得到的path不应该是"/"、"/id"、"/name"吗?
Person person = new Person();
person.setId("id");
person.setName("id");
Map<String, Object> pathValues = JSONPath.paths(person);
Set<String> paths = pathValues.keySet();
for (String path : paths) {
LOG.info(path);
}
debug下了源码,里面用于用到的是一个Map<Object,String>,根据该map是否含有key来判断是否属于结果集。而对于上面的情况,由于id和name的值都是"id",所以处理了id属性之后,处理name属性时,由于map中已存在key相同的值,所以"/name"这个path就没有放入该map中了。不知道是我用的不对还是逻辑上有问题?
Hope to hear from you, sincerely.
使用的fastjson版本是1.2.40,如下:
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.40</version>
</dependency>