String json = "{"apiName":"template.loadAll","param":{"name":"张三","age":"12"},"callbacks":""}";
public class InjectedBean {
private String apiName;
private String param;
private String callbacks;
public String getApiName() {
return apiName;
}
public void setApiName(String apiName) {
this.apiName = apiName;
}
public String getParam() {
return param;
}
public void setParam(String param) {
this.param = param;
}
public String getCallbacks() {
return callbacks;
}
public void setCallbacks(String callbacks) {
this.callbacks = callbacks;
}
}
InjectedBean parseObject = JSON.parseObject(json,InjectedBean.class);
System.out.println(parseObject.getParam());
输出结果{"age":"12","name":"张三"}
我原本是{"name":"张三","age":"12"}
版本compile 'com.alibaba:fastjson:1.1.58.android'
6条答案
按热度按时间lhcgjxsq1#
可以试下
InjectedBean parseObject = JSON.parseObject(json,InjectedBean.class,Feature.OrderedField);
k5ifujac2#
依然被交换了 , 使用非Android版就不会有问题
6kkfgxo03#
看了下Android版本的源码,问题出在
com.alibaba.fastjson.serializer.MapSerializer
传入的object为JSONObject对象里边虽然存的linkedHashMap但是对象本身
if ((!(map instanceof SortedMap)) && !(map instanceof LinkedHashMap)) {
判断为true,所以就把map的顺序搞乱了,不知道是不是bug,在普通版本中这块被注解掉了。
fcipmucu4#
知道问题源了 , 期望确定一下是不是BUG
hujrc8aj5#
是这样设计的,不是bug
scyqe7ek6#
有可能提供一种配置让位置不要交换呢