Jersey JSON-Processing:将键值对添加到JsonObject

时间:2015-07-08 08:32:46

标签: java json rest jersey-2.0 jsonobject

我正在使用Jersey实现在Java中创建Restful webservice。为了处理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添加一个条目?

1 个答案:

答案 0 :(得分:3)

我担心没有更简单的方法...... Option Explicit Private mySheet As Range Public Property Get clTrueUsedRange() As Range Set clTrueUsedRange = TrueUsedRange(mySheet) End Property Public Property Let clTrueUsedRange(ByRef wsSource As Range) mySheet = wsSource End Property Private Function TrueUsedRange(ByRef wsSource As Worksheet) As Range Dim rLastCell As Range With wsSource Set rLastCell = .Cells.Find(What:="*", After:=.Cells(1, 1), LookIn:=xlFormulas, LookAt:= _ xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False) Set TrueUsedRange = .Range("$A$1:" & rLastCell.Address) End With End Function 是不可变的,所以你不能直接修改它。因此,您需要创建一个新的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