Azure-sdk-for-java: JSON ์ง๋ ฌํ™”๋ฅผ ์‚ฌ์šฉ์ž ์ •์˜ํ•˜๋Š” ๊ธฐ๋Šฅ ๋…ธ์ถœ

์— ๋งŒ๋“  2019๋…„ 06์›” 08์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: Azure/azure-sdk-for-java

์‚ฌ์šฉ์ž๊ฐ€ JSON ์ง๋ ฌํ™”๋ฅผ ์‚ฌ์šฉ์ž ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต์šฉ ObjectMapper ์ฐธ์กฐ๋ฅผ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๋Š” Azure/azure-cosmosdb-java#153์— ๋” ๋‚˜์€ ์˜ต์…˜์ด ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

Client Cosmos Investigate v4-item feature-request

๋ชจ๋“  3 ๋Œ“๊ธ€

๋‹ค์Œ ๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๋ฌผ์„ ์ฝ์€ ํ›„: https://devblogs.microsoft.com/cosmosdb/difference-between-null-and-undefined/ Java SDK๋กœ ์ด๋ฅผ ๋‹ฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๊ถ๊ธˆํ–ˆ์Šต๋‹ˆ๋‹ค.
๊ธฐ๋ณธ ObjectMapper๋Š” ํ•ญ์ƒ null ํ•„๋“œ๋ฅผ ์ง๋ ฌํ™”ํ•˜๋„๋ก ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

๋‚ด ์—”ํ‹ฐํ‹ฐ ํด๋ž˜์Šค์— ttl ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ ๋‚˜๋Š” ์ด๊ฒƒ์„ ์šฐ์—ฐํžˆ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ํŠน์ • Cosmos DB ํ•ญ๋ชฉ์„ ์—…๋ฐ์ดํŠธํ•  ๋•Œ ์‚ฌ์šฉ์ž ์ง€์ • TTL์„ ์„ค์ •ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋Œ€๋ถ€๋ถ„์˜ ํ•ญ๋ชฉ์€ ์‚ฌ์šฉ์ž ์ง€์ • TTL์ด ํ•„์š”ํ•˜์ง€ ์•Š์œผ๋ฉฐ ๋‹จ์ˆœํžˆ ์ปจํ…Œ์ด๋„ˆ TTL์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ•„๋“œ๋Š” null์ด ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ttl ํ•„๋“œ๋ฅผ null ๋กœ ์„ค์ •ํ•˜๋ฉด ๋‹ค์Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ž…๋ ฅ ttl 'null'์ด ์ž˜๋ชป๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋งŒ๋ฃŒ๋˜์ง€ ์•Š์Œ์„ ์˜๋ฏธํ•˜๋Š” '2147483647' ๋˜๋Š” '-1'๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ 0์ด ์•„๋‹Œ ์–‘์˜ ์ •์ˆ˜๋ฅผ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ ์— ์žˆ๋Š” ๋ฌธ์„œ์— ttl ๋ฅผ null ๋กœ ์„ค์ •ํ•˜๋ฉด ์ž‘๋™ํ•œ๋‹ค๊ณ  ๋ช…์‹œ๋˜์–ด ์žˆ์ง€๋งŒ null ๊ฐ€ ๋™์ผํ•œ ์˜๋ฏธ์ธ์ง€๋Š” ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@kushagraThapar SDK์˜ ์ผ๋ถ€ ๊ณ ๊ธ‰ ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ์‹ค์ œ๋กœ ์ œํ•œํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๊ธฐ์—์„œ ๋ช‡ ๊ฐ€์ง€ ์†”๋ฃจ์…˜์„ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‹น์‹ ์€ ๊ทธ๊ฒƒ์„ "์ฃผ์ฐจ์žฅ" ๋ฐ–์œผ๋กœ ๋‹ค์‹œ ์˜ฎ๊ธฐ๊ณ  ๋” ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋กœ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

์˜ˆ๋ฅผ ๋“ค์–ด https://github.com/FasterXML/jackson-module-kotlin ์ด SDK์— ์ˆจ๊ฒจ์ง„ ์ •์  ObjectMapper์— ๋“ฑ๋ก๋˜์–ด ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— Kotlin ํด๋ž˜์Šค๋ฅผ ์ฆ‰์‹œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” ๋ฐ์ดํ„ฐ ํด๋ž˜์Šค์˜ ์—ญ์ง๋ ฌํ™”๊ฐ€ ์ž‘๋™ํ•˜๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด Kotlin ํด๋ž˜์Šค์— ์ˆ˜๋™์œผ๋กœ ์ฃผ์„์„ ๋‹ฌ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

data class Email <strong i="9">@JsonCreator</strong> constructor(
    <strong i="10">@param</strong>:JsonProperty("email") val email: String // note the redundant specification of "email"
)

๋˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ˆ˜๋ช… ์ฃผ๊ธฐ์˜ ์ดˆ๊ธฐ ์‹œ์ ์— ์ •์  ObjectMapper ์ธ์Šคํ„ด์Šค์—์„œ Utils.getSimpleObjectMapper().registerModule(new KotlinModule()) ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ํ•ดํ‚น์„ ์ˆ˜ํ–‰ํ•˜์‹ญ์‹œ์˜ค.

@dkroehan ์˜ ๊ฒฝ์šฐ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ttl ํด๋ž˜์Šค ํ•„๋“œ์— <strong i="16">@get</strong>:JsonInclude(JsonInclude.Include.NON_NULL) (Kotlin)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

@xinlian12 - ์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์ƒ๊ฐ์€?

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰