Как реализовать с AutoBean список различных базовых типов, таких как String, Integer и т. Д.?
Я хочу создать запрос на JSON-RPC с тремя параметрами - String, Integer и моим собственным объектом. Запрос должен выглядеть так:
{"method":"MyMethod", "params":["text", 123, {"name": "any text", "num": 15}], "id":1}
В идеале я хотел бы создать AutoBean следующим образом (но он не работает):
interface JsonRpcRequest {
String getJsonrpc();
void setJsonrpc(String value);
String getMethod();
void setMethod(String value);
List<Object> getParams(); // ERROR: Type Object may not be used
void setParams(List<Object> params); // ERROR: Type Object may not be used
}
interface JsonRpcRequestFactory extends AutoBeanFactory {
AutoBean<JsonRpcRequest> jsonRpcRequest();
}
Проблема в том, что фреймворк AutoBean не позволяет использовать List<Object>
внутренний интерфейс
Есть ли другой способ создать список / массив элементов разных типов, основанных и не основанных?
2 ответа
Нет, ты просто не можешь. AutoBean требует, чтобы все было статически типизировано: без полиморфизма и без смешанных списков карт.
Возможно, вас заинтересует встроенная поддержка RequestFactory для JSON-RPC.
Почему все ваши параметры должны быть переданы обратно в список? Конечно, вы не собираетесь делать то же самое с String
, Integer
, и другой Object
! Просто отправьте их все обратно отдельно.
Кроме того, вы не отправляете кастом Object
через JSON, вы отправляете objid
этого объекта... так что просто отправьте Integer id
и пусть сервер справится с этим.