2017-11-08 1 views
3

잭슨 라이브러리를 사용하여 영역 모델을 json 객체로 변환하는 동안 알 수없는 키를 가져 오는 중입니다.잭슨을 사용하여 구문 분석 영역

내 영역 모델 인스턴스입니다.

public class RecordData extends RealmObject { 

    public RecordData() { 

    } 

    private FormData formData; 

    @Nullable 
    @JsonProperty("values") 
    private RealmList<Values> values; 

    @Nullable 
    @JsonProperty("value") 
    private String value; 
} 

영역 모델을 json 개체로 변환하기위한 코드.

{"loaded":true,"managed":false,"valid":true,"value":"fdfdf","values":[]} 

영역 버전 : io.realm:realm-gradle-plugin:4.1.1

Rxjava 버전 : 'io.reactivex.rxjava2:rxjava:2.1.6'

잭슨 버전 : 구문 분석 JSON에서

JSONObject recordDataJsonObject = new JSONObject(new ObjectMapper().writeValueAsString(formData.getRecordData())); 

출력 내가로드 얻고 왜 com.fasterxml.jackson.core:jackson-databind:2.8.6

, 관리 및 v alid 부울 값?

public static String getJsonFromObject() { 
     ObjectMapper objectMapper = ObjectMapperHelper.getObjectMapperInstance(); 
     String jsonString = null; 
      try { 
      jsonString = objectMapper.writeValueAsString(formData.getRecordData()); 
     } catch (JsonProcessingException e) { 
      e.printStackTrace(); 
     } 
     return jsonString != null ? jsonString : ""; 
    } 

을하고 된 JSONObject에 응답을 얻을 : ObjectMapper에서

+0

'getRecordData()'코드를 게시 할 수 있습니까? – adnanyousafch

+0

getRecordData() 메소드는 RecordData 영역 모델 인스턴스 만 반환합니다. –

+0

'Realm.where(). findAll()'쿼리를 작성하지 않습니까? 내가 쓴 비슷한 문제에 부딪혔다는 것을 확인하기 위해 코드를 볼 필요가있다. – adnanyousafch

답변

0

쓰기 응답이 작업을 수행해야

try { 
    JSONObject jsonObject = new JSONObject().getJSONObject(getJsonFromObject()); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
     } 

해피 코딩!

+0

위와 같은 것을 사용했지만 문제가 있습니다. –

0

저는 Gson 파싱 라이브러리를 사용하여 해결했습니다.

JSONObject recordDataJsonObject = new JSONObject(new Gson().toJson(formData.getRecordData())); 

알려지지 않은 키를 반환하지 않습니다. 출력은 여기에 있습니다.

{"value":"fdfdf","values":[]} 

대소 문자가 일치하는 경우이 해결책을 찾으십시오.

@JsonIgnoreProperties({"loaded", "managed", "valid"}) 
public class RecordData extends RealmObject { 

    public RecordData() { 

    } 

    private FormData formData; 

    @Nullable 
    @JsonProperty("values") 
    private RealmList<Values> values; 

    @Nullable 
    @JsonProperty("value") 
    private String value; 
} 

또 다른 옵션은 @RealmClass public class RecordData implements RealmModel을 사용하는 것입니다

0

당신은 @JsonIgnoreProperties 주석을 사용할 수 있습니다.

+0

JsonIgnoreProperties를 사용하면 타자 옵션이됩니다. 그러나 @RealmClass 주석은 이미 내 수업에 추가되었습니다. –

+0

요점은'extends RealmObject' 대신'implements RealmModel'이지만, 무시 속성이 더 쉽다고 생각합니다 – EpicPandaForce

관련 문제