【问题标题】:Jersey JSON-Processing: add key-value pair to JsonObjectJersey JSON-Processing:将键值对添加到 JsonObject
【发布时间】:2015-07-08 08:32:45
【问题描述】:

我正在使用 Jersey 实现在 Java 中制作 Restful Web 服务。为了处理 Json,我使用“Java API for JSON Processing (JSON-P)”。

JsonObject里面,已经有很少的条目了,我想添加一个新的条目(键值对)。

我无法找到添加新条目(键值对)的直接方法。

我可以创建一个新的JsonObject,遍历旧的JsonObject并将其中的所有值复制到新的JsonObject中,并在新的JsonObject中添加一个新条目。但是有什么直接的方法可以在JsonObject 中添加一个新条目吗?

这是代码,

     JsonObject myJsonObject = Json.createObjectBuilder()
    .add("key1", "value1")
    .add("key2", "value2")
    .build();

如何在同一个myJsonObject 中再添加一个条目?

【问题讨论】:

标签: java json rest jersey-2.0 jsonobject


【解决方案1】:

恐怕没有更简单的方法了...JsonObject 是不可变的,所以不能直接修改。所以你需要创建一个新的JsonObjectBuilder 来创建一个不同的。如果你有一个像这样的对象:

 JsonObject myJsonObject = Json.createObjectBuilder()
.add("key1", "value1")
.add("key2", "value2")
.build();

您可以执行以下操作:

JsonObjectBuilder builder = new JsonObjectBuilder();

for(Entry<String, JsonValue> entry : myJsonObject.entrySet()) {
  builder.add(entry.getKey(), entry.getValue());
}

// modify key
builder.add("key1", "differentValue");
// add key
builder.add("key3", "newValue");

JsonObject newObject = builder.build();

但我想最好有一个方便的构造函数new JsonObjectBulder(existingJsonObject) 来摆脱循环......

编辑:作为替代方案,您可以查看mapping technologies

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-04
    • 1970-01-01
    • 2017-10-17
    • 2020-04-26
    • 2019-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多