<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Jackson on 얼쑤 · Team Edo</title><link>https://team-edo.github.io/tags/jackson/</link><description>Recent content in Jackson on 얼쑤 · Team Edo</description><generator>Hugo</generator><language>ko-kr</language><lastBuildDate>Mon, 02 Nov 2026 00:00:00 +0900</lastBuildDate><atom:link href="https://team-edo.github.io/tags/jackson/index.xml" rel="self" type="application/rss+xml"/><item><title>Jackson 3에서 JSON 배열과 누락 필드 읽기</title><link>https://team-edo.github.io/posts/2026/11/read-stored-json-trees-with-jackson/</link><pubDate>Mon, 02 Nov 2026 00:00:00 +0900</pubDate><guid>https://team-edo.github.io/posts/2026/11/read-stored-json-trees-with-jackson/</guid><description>&lt;p>학습 단계의 설명과 채점에 쓸 악보는 DB에 JSON으로 저장합니다. 학습 단계에서 잘못된 항목을 건너뛰면 화면에 설명이 빠진 채 나타납니다. 악보에서 정수를 잘못 읽으면 음표의 길이나 시작 박을 다르게 해석할 수 있습니다. 두 파서에서 저장값을 읽는 지점에 입력 계약을 드러냈습니다.&lt;/p>
&lt;h2 id="배열-노드에서-원소를-꺼낸-뒤-변환했다">배열 원소를 꺼내 변환&lt;/h2>
&lt;p>학습 단계에는 할 일과 운지 설명처럼 배열로 저장하는 항목이 있습니다. Jackson 3의 &lt;code>JsonNode.map&lt;/code>은 노드 자체에 함수를 적용합니다. 배열의 각 원소를 변환하려면 노드가 배열인지 확인하고 &lt;code>values()&lt;/code>로 원소를 꺼낸 뒤 Kotlin의 &lt;code>map&lt;/code>을 적용합니다.&lt;/p></description></item><item><title>96.7 BPM이 96으로 바뀐 이유</title><link>https://team-edo.github.io/posts/2026/10/strict-json-input-types/</link><pubDate>Wed, 28 Oct 2026 00:00:00 +0900</pubDate><guid>https://team-edo.github.io/posts/2026/10/strict-json-input-types/</guid><description>&lt;p>연습 세션을 시작할 때 앱은 곡과 템포를 서버에 보냅니다. 템포는 JSON 정수만 받기로 했는데, 리뷰 중 &lt;code>&amp;quot;bpm&amp;quot;: 96.7&lt;/code>을 보냈더니 서버는 &lt;strong>96 BPM으로 처리하고 HTTP 201&lt;/strong>을 돌려줬습니다. 숫자가 허용 범위에 드는지는 검사했지만, 그 전에 소수점이 사라졌습니다.&lt;/p>
&lt;h2 id="검증기에-도착한-값은-이미-정수였다">검증 전에 정수로 바뀐 BPM&lt;/h2>
&lt;p>당시 프로젝트의 Jackson 3.1.5 설정으로 입력 모양을 바꿔 봤습니다. 정수 칸에 보낸 문자열 &lt;code>&amp;quot;96&amp;quot;&lt;/code>도 96이 됐고, 문자열이어야 하는 곡 ID에는 숫자 7을 보내도 &lt;code>&amp;quot;7&amp;quot;&lt;/code>이 됐습니다. 불리언 칸에 보낸 1은 &lt;code>true&lt;/code>가 됐습니다.&lt;/p></description></item></channel></rss>