Scalatra를 사용하고 있습니다. Scalatra는 Json4S를 사용하여 Json 문자열을 생성합니다. 나는일부 및 없음 값이 포함 된 목록에서 Json4S를 사용하여 Json 문자열 생성
[ "A", "B"]
목록 (일부 ("A"), 없음, 일부 ("B"))
를받을
I 수신하고자
[ "A"정의 "B"]
어떻게 고칠 수 있습니까?
Scalatra를 사용하고 있습니다. Scalatra는 Json4S를 사용하여 Json 문자열을 생성합니다. 나는일부 및 없음 값이 포함 된 목록에서 Json4S를 사용하여 Json 문자열 생성
[ "A", "B"]
목록 (일부 ("A"), 없음, 일부 ("B"))
를받을
I 수신하고자
[ "A"정의 "B"]
어떻게 고칠 수 있습니까?
undefined
은 자바 스크립트에서 유효하더라도 유효한 json 값이 아닙니다. rfc4627 가입일 (애플리케이션/JSON)
거짓 널 참
:JSON 값은 객체, 배열 번호 또는 문자열 또는 하나 다음 세 문자 이름이어야
(정의되지 않은 언급)
그러나이
null
대신undefined
과는 상당히 솔직하지 않습니다. 스칼라 콘솔, 처음 몇 수입 :scala> import org.json4s._ scala> import org.json4s.native.Serialization.write
고객 시리얼 :
scala> class NoneJNullSerializer extends CustomSerializer[Option[_]](format => ({ case JNull => None }, { case None => JNull }))
그리고 짜잔가 :
scala> implicit val formats = DefaultFormats + new NoneJNullSerializer() scala> val ser = write(List(Some("A"), None, Some("B"))) ser: String = ["A",null,"B"]
None이 Map의 값일 때 문제가 해결되지 않는 것 같습니다. 암시 적 변환이 발생하기 전에 전체 키가 제거 된 것처럼 보입니다. –
[편집]이 문제는 json4s라는 것을 잊어 버렸고 spray-json에 대한 의견을 남겼습니다 : – theon
이 문제는 3.2.11 버전에서 해결되었습니다. DefaultFormats.preservingEmptyValues 만 사용하면됩니다. 문제가있는 사람은 http://stackoverflow.com/questions/27855934/json4s-ignoring-the-none-feilds-while-seriallization을 참조하십시오. –
는 왜 것을 거기에 정의되지 않은 원하는가? 해당 정보의 수신자가 배열에 해당 요소가 없으면 정의되지 않은 데서 이점을 얻을 수 있습니까? – cmbaxter
3 요소를 사용하여 배열을 serialize 할 때 3 개의 요소가있는 새로운 배열을받을 것으로 예상됩니다. 또한 직렬화 된 배열이 동등한 동안 목록 (일부 ("A"), 없음, 일부 ("B")) <> 목록 (일부 ("A"), 일부 ("B"), 없음) 나는 이것이 Json4S 라이브러리의 버그라고 생각한다. –