Я столкнулся с странной ситуацией при разборе строки json с использованием readValue() ObjectMaper. Я использую Jackson 2.4.1 вместе с Spring 4.0.6. Проблема в том же самом столбце json при подаче на readValue() дает null в разы и в другие действительные объекты.
JSON Строка:Несоответствие в JSON ObjectMapper readValue parsing - дает Null иногда
{"productGroupInfoTransport": {"groupId":36,"range":"LMEURSMA","productType":"LMFE","status":"ANNOUNCE","regionsList":[],"productsList":[],"groupName":"Bright Start test"}}
Код:
public Object getData(String jSONObject, String action, String module)
throws Exception {
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,
false);
mapper.configure(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES,
false);
mapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT,
false);
//mapper.configure(SerializationConfig. WRITE_NULL_PROPERTIES, false);
String transport = null;
if (jSONObject.contains(ERROR)) {
transport = "Exception";
throw new Exception("Unable to read Data");
} else {
transport = getTransport(action, module);
}
Object transportObject = null;
transportObject = mapper.readValue(jSONObject, getTransport(transport));
return transportObject;
}
ProductTransport:
package com.leggmason.lmEPAM.transport;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.leggmason.lmEPAM.model.ProductGroupModel;
public class ProductGroupTransport extends EPAMTransport<ProductGroupModel> {
@JsonProperty("productGroupInfoTransport")
protected ProductGroupModel modelObject;
@JsonProperty("productGroupTransport")
protected List<ProductGroupModel> data;
@JsonProperty("productGroupTransport")
@Override
public List<ProductGroupModel> getListData() {
return this.data;
}
@JsonProperty("productGroupTransport")
@Override
public void setData(List<ProductGroupModel> data) {
this.data = (List<ProductGroupModel>) data;
}
@Override
public String getModule() {
return null;
}
@JsonProperty("productGroupInfoTransport")
@Override
public ProductGroupModel getObject() {
return this.modelObject;
}
@JsonProperty("productGroupInfoTransport")
public void setObject(ProductGroupModel modelObject) {
this.modelObject = modelObject;
}
@Override
public void setObject(Object modelObject) {
// TODO Auto-generated method stub
}
}
В коде выше, когда передается JsonString, один раз ProductTransposrt будет его modelObject заселена правильно с Объект, но при перезапуске сервера такая же строка JSON даст modelObject как nul l после разбора. Я не понимаю, почему. Спасибо за помощь.