我正在使用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
添加一个条目?
答案 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。