2014-09-09 1 views
-1

Я столкнулся с странной ситуацией при разборе строки 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 после разбора. Я не понимаю, почему. Спасибо за помощь.

ответ

0

Вы можете попробовать следующий код для разбора JSON объект

JSONObject obj = new JSONObject(jSONObject); 
JSONArray array = obj.getJSONArray("productGroupInfoTransport"); 
System.out.println(array.getJSONObject(0).getString("groupId")) 

Теперь вы можете разобрать JSON строку правильно. Возможно, это поможет только разбор строки json.

Смежные вопросы