我有一个无法控制的服务器。我只是消耗,仅此而已。我以JSON的形式从中获得响应。我使用GSON从此JSON实例化Java对象。后来,我从服务器收到另一个响应,该响应表示该对象的一部分需要进行更新。从JSON表示的主要对象到对象树的任何部分,都可以更新任何数量的字段和其他成员对象。
最初,对象进入(不带格式)看起来像这样:
{
"action": "ephmeral",
"object1": {
"id": 1,
"stuff": [{
"id": 2,
"type": "something",
"where": "there",
"count": 5
}, {
"id" 3,
"type": "otherthing",
"where": "here",
"count": 5
}
],
"field2": 2,
"field3": 3,
"field4": 4,
"field5": 5,
...
"fieldN": 999,
}
}
这是一个小的示例,表示对象及其字段中的任何复杂程度。这是主要对象的初始状态。
稍后,与服务器进行通信以较小的方式更新对象(可以更新任意多个字段,这是一个小例子)。
[{
"action": "update",
"object1": {
"id": 1,
"stuff": [{
"id": 2,
"count": 10
}
]
}
}, {
"action": "delete",
"object1": {
"id": 1,
"stuff": [{
"id": 3
}
]
}
}, {
"action": "update",
"object2": {
"id": 5,
"amount": 123.45
}
}
]
这些action
标记表示应以某种方式更新对象或其任何字段的特定方式(嗯,已经已更新服务器端)。可能是根据action
的值来更新事物,删除事物等。
我的问题是,不熟悉JSON和REST,以及服务器使用的其他一些技术(例如,使用Rails;使用Java),我什至不知道如何搜索看看这种特定的处理方式是否有名称,然后我可以找到一个要集成到我的Java代码中的库。另外,GSON是否可以通过某种方式正确处理此问题?就目前而言,它为我提供了代表第一个动作的新对象,而随后的动作均不影响该对象(我不认为这是Bug或GSON的任何错误)。
此刻,我本人正在解析JSON响应字符串,以获取针对一些小而关键的请求的已知,固定(ish)响应。但这当然不是动态的或灵活的。这是一种自定义的交流风格,还是一种我可以灵活动态地处理的已知风格?