使用jersey的REST Service输出中的java.util.Map

欧内斯特·波德里奇

我正在使用apache jersey 2.2,并且我有以下休息服务

@GET
@Path("load3")
@Produces({ MediaType.APPLICATION_JSON })
@Consumes({ MediaType.APPLICATION_JSON })
public LocalizationContainer load3() {
    Map<String, String> map = new HashMap<String, String>();

    map.put("key1", "value1");
    map.put("key2", "value2");

    return new SampleContainer(map);

}


@XmlRootElement

公共类SampleContainer {

public SampleContainer(){
}

public SampleContainer(Map<String,String> map){
    this.map = map;
}

@XmlJavaTypeAdapter(value = MapAdapter.class)
private Map<String, String> map = new HashMap<String, String>();

public Map<String, String> getMap() {
    return map;
}

public void setMap(Map<String, String> map) {
    this.map = map;
}

}

MapAdapter的定义如下:

public class MapAdapter extends XmlAdapter<MapAdapter.AdaptedMap, Map<String, String>> {

public static class AdaptedMap {
    @XmlVariableNode("key")
    List<AdaptedEntry> entries = new ArrayList<AdaptedEntry>();
}

public static class AdaptedEntry {
    @XmlTransient
    public String key;
    @XmlValue
    public String value;
}

@Override
public AdaptedMap marshal(Map<String, String> map) throws Exception {
    AdaptedMap adaptedMap = new AdaptedMap();
    for (Entry<String, String> entry : map.entrySet()) {
        AdaptedEntry adaptedEntry = new AdaptedEntry();
        adaptedEntry.key = entry.getKey();
        adaptedEntry.value = entry.getValue();
        adaptedMap.entries.add(adaptedEntry);
    }
    return adaptedMap;
}

@Override
public Map<String, String> unmarshal(AdaptedMap adaptedMap) throws Exception {
    List<AdaptedEntry> entries = adaptedMap.entries;
    Map<String, String> map = new HashMap<String, String>(entries.size());
    for (AdaptedEntry adaptedEntry : entries) {
        map.put(adaptedEntry.key, adaptedEntry.value);
    }
    return map;
}

}

其余服务的输出是

{"map":{"key2":"value2","key1":"value1"}}

但我不需要根元素。我讨厌的输出如下:

{"key2":"value2","key1":"value1"}

我该怎么做才能实现这个目标?可能吗 ?

非常感谢

欧内斯特·波德里奇

我使用@XmlPath批注解决了。

通过这种方式:

@XmlJavaTypeAdapter(value = MapAdapter.class)
@XmlPath(".")
private Map<String, String> map = new HashMap<String, String>();

映射在json本身中序列化,没有“ map”引用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用jersey的REST Service输出中的java.util.Map

来自分类Dev

如何使用Jersey REST cleint在REST URL中传递java.util.date

来自分类Dev

Spring Jersey-java.lang.NoSuchMethodError:javax.ws.rs.core.Application.getProperties()Ljava / util / Map

来自分类Dev

Spring Jersey-java.lang.NoSuchMethodError:javax.ws.rs.core.Application.getProperties()Ljava / util / Map

来自分类Dev

从java.util.Map获取值

来自分类Dev

紧凑的java.util.Map实现

来自分类Dev

compact java.util.Map implementation

来自分类Dev

从java.util.Map获取值

来自分类Dev

紧凑的java.util.Map实现

来自分类Dev

java.util.Map values() 方法性能

来自分类Dev

java.util.HashMap是否未在Kotlin中实现java.util.Map?

来自分类Dev

使用@ElementCollection和java.util.Map的ManyToMany(带有其他列)?

来自分类Dev

使用JPA,可以将关系表作为@Entity映射到java.util.Map吗?

来自分类Dev

如何使用Jackson序列化基于java.util.Map的类

来自分类Dev

如何在Hibernate XML中使用关联映射java.util.Map?

来自分类Dev

循环中的 java.util.Map.putAll(Map<>) 和 java.util.Map.put(Integer, Object) 有什么区别

来自分类Dev

java neo4j使用密码创建节点:java.lang.String无法转换为java.util.Map

来自分类Dev

使用util:map时如何指定空键

来自分类Dev

找不到java.util.Map的类文件

来自分类Dev

Esper将结果转换为java.util.Map

来自分类Dev

Spring通过@Value从@PropertySource注入java.util.Properties或Map

来自分类Dev

Esper将结果转换为java.util.Map

来自分类Dev

“ Map”无法注入“ java.util.NavigableMap”类型的属性

来自分类Dev

java.util.Set转换为scala.immutable.Map

来自分类Dev

使用JPA批注映射java.util.Map时,键和值列名称将被覆盖

来自分类Dev

为了减少堆使用,将Chronicle Map用于java.util.String而不是.`intern`方法有什么好处?

来自分类Dev

使用java.util.Timer

来自分类Dev

如何在Java中将java.util.Map转换为scala.collection.immutable.Map?

来自分类Dev

为什么Aerospike Java客户端中的Bin类型无法实现java.util.Map

Related 相关文章

  1. 1

    使用jersey的REST Service输出中的java.util.Map

  2. 2

    如何使用Jersey REST cleint在REST URL中传递java.util.date

  3. 3

    Spring Jersey-java.lang.NoSuchMethodError:javax.ws.rs.core.Application.getProperties()Ljava / util / Map

  4. 4

    Spring Jersey-java.lang.NoSuchMethodError:javax.ws.rs.core.Application.getProperties()Ljava / util / Map

  5. 5

    从java.util.Map获取值

  6. 6

    紧凑的java.util.Map实现

  7. 7

    compact java.util.Map implementation

  8. 8

    从java.util.Map获取值

  9. 9

    紧凑的java.util.Map实现

  10. 10

    java.util.Map values() 方法性能

  11. 11

    java.util.HashMap是否未在Kotlin中实现java.util.Map?

  12. 12

    使用@ElementCollection和java.util.Map的ManyToMany(带有其他列)?

  13. 13

    使用JPA,可以将关系表作为@Entity映射到java.util.Map吗?

  14. 14

    如何使用Jackson序列化基于java.util.Map的类

  15. 15

    如何在Hibernate XML中使用关联映射java.util.Map?

  16. 16

    循环中的 java.util.Map.putAll(Map<>) 和 java.util.Map.put(Integer, Object) 有什么区别

  17. 17

    java neo4j使用密码创建节点:java.lang.String无法转换为java.util.Map

  18. 18

    使用util:map时如何指定空键

  19. 19

    找不到java.util.Map的类文件

  20. 20

    Esper将结果转换为java.util.Map

  21. 21

    Spring通过@Value从@PropertySource注入java.util.Properties或Map

  22. 22

    Esper将结果转换为java.util.Map

  23. 23

    “ Map”无法注入“ java.util.NavigableMap”类型的属性

  24. 24

    java.util.Set转换为scala.immutable.Map

  25. 25

    使用JPA批注映射java.util.Map时,键和值列名称将被覆盖

  26. 26

    为了减少堆使用,将Chronicle Map用于java.util.String而不是.`intern`方法有什么好处?

  27. 27

    使用java.util.Timer

  28. 28

    如何在Java中将java.util.Map转换为scala.collection.immutable.Map?

  29. 29

    为什么Aerospike Java客户端中的Bin类型无法实现java.util.Map

热门标签

归档