2010-08-20 5 views
2

스프링을 사용하여 (Jackson과 함께) jQuery를 사용하여 양식을 객체로 전달합니다. 내 pojo에는 nullable float가 포함됩니다. 필드가 비어있는 경우에는, 잭슨은 Exeption가 발생합니다 :Float가 null 인 경우 Jackson (JSON)이 JsonMappingException을 throw합니다.

org.codehaus.jackson.map.JsonMappingException: Can not construct instance of java.lang.Float from String value '': not a valid double value 

내가 (양식 필드 또는 빈 값) 널 (null)을 허용하기 위해 어떻게해야합니까?

감사 어

+0

'null'이고 '' "'이 아닌가요? – Gabe

+0

실제로, 그것은 ""입니다. 그러나 그 차이점은 무엇입니까? 글쎄, 그냥 빈 필드를 전달할 때 오류가 발생하지 않기를 원합니다. –

+1

JSON의 값이''''이 아니라''null'' 인 경우 어떻게됩니까? Javascript에서도 "null"과 "" "는 다른 값입니다. –

답변

1

기본적으로 Jackson은 실제로 null 값으로 명시 적 JSON null 만 고려합니다. 그러나 빈 문자열에서 null로 강제 변환하려는 경우 기능 요청을 쉽게 추가 할 수 있습니다. 이것은 실제로 좋은 개선이라고 생각합니다. 이것은 오픈 소스 프로젝트가 어떻게 개선되어야하는지에 대한 것입니다. 사용자가 거기에 있어야한다고 생각하는 것들, 일들이 어떻게 작동해야 하는지를 묻는 것입니다.

단기간에 빈 문자열을 받아들이고 null을 생성하는 사용자 지정 디시리얼라이저 (http://wiki.fasterxml.com/JacksonHowToCustomDeserializers, 가이드가 아님)를 등록 할 수도 있습니다.

+0

고마워, 그게 내가 찾고 있던 해결책이다. 어쨌든, 나는 커스텀 시리얼 라이저를 만드는 방법을 이해하고 있지만, 스프링과 함께 작동시키는 방법을 모른다. 어떠한 제안? –

+0

세부 사항을 모르지만 값 유형에 대해 @JsonDeserialize (= ... 사용)를 값 유형에 사용할 수있는 경우이를 사용할 수 있습니다. 그렇지 않은 경우 ObjectMapper에 액세스 할 수 있어야합니다. http://wiki.fasterxml.com/JacksonHowToCustomDeserializers에 작은 문서 렛이 있습니다. 등록에 대한 설명이 나와 있습니다. 그러나 이것 역시 스프링에 대해서는 사실이 아닌 완전한 제어를 가정합니다. FWIW, 빈 문자열 처리 기능 요청은 (http://jira.codehaus.org/browse/JACKSON-349)이며 최소한 1.6의 일부가 될 것입니다. – StaxMan

0

가장 좋은 방법은 자바 스크립트 코드에서 빈 문자열을 확인하고 그 경우에 null을 전달하는 것입니다.

+0

고마워, 그건 프로토 타이핑을위한 나의 해결책이 될 것이다. 그러나 나는 클라이언트 측이 전환에 적합한 장소라고 생각하지 않습니다. –

관련 문제