我有一些对象。 这些对象的目的是“装载”用户配置文件。
public class Profile {
private Long userId;
private String userName;
private String accessToken;
private Map<Integer,Parameter> parameters;
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public String setUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getAccessToken() {
return accessToken;
}
public void setAccessToken(String accessToken) {
this.accessToken = accessToken;
}
public Map<Integer, Parameter> getParameters() {
return parameters;
}
public void setParameters(Map<Integer, Parameter> parameters) {
this.parameters = parameters;
}
}
参数是通用的。
有时它是Parameter<Boolean>
,
有时参数是对象列表。
目标是防止与服务器耦合。
public class Parameter<T> {
private String name;
private T value;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public T getValue() {
return value;
}
public void setValue(T value) {
this.value = value;
}
}
这是Json响应的一个示例(部分) ...
"accessToken": "token-bla-bla",
"userId": 28,
"userName": "xpto",
"parameters": {
"1": {
"name": "stores",
"value": [
{
"code": 8268,
"name": "Store One",
"offers": true
}
]
},
"2": {
"name": "applyDiscount",
"value": true
},
...
"22": {
"name": "sellers",
"value": [
{
"id": 33,
"nome": "John Meyer"
}
]
},
欢迎任何答案! 我测试了TypeToken, 输入其他答案的其他样本, 但, 没有人为我工作。
编辑
这里有更多代码来解释这个问题。
public void handlerAllParams(Profile profile){
Map<Integer, Parameter> parameterMap = profile.getParameters();
for (Map.Entry<Integer, Parameter> parameterEntry : profile.getParameters().entrySet()) {
Integer pKey = parameterEntry.getKey();
Parameter p = parameterEntry.getValue();
switch (pKey) {
case 1:
Parameter<ArrayList<Store>> storesParameter = parameterEntry.getValue();
List<Store> stores = storesParameter.getValue();
handleStores(stores);
break;
方法handleStores
应该在Store对象的ArrayList中转换“Json”参数“1”的一部分。
但,
结果是LinkedTreeMap,
当我尝试转换结果是存储一个“格式错误”的名称字段。
如果我有其他参数,如参数确定,
但是当我有参数&gt;它无法反序列化。
我怎么解决这个问题?