"์•ˆ๋…•, ์นœ๊ตฌ!"

"์•ผ, ๋””์—๊ณ ."

"์—ฌ๊ธฐ์„œ JSON ์ง๋ ฌํ™”์˜ ๊ธฐ๋ณธ ์‚ฌํ•ญ์„ ๋ฐฐ์› ์Šต๋‹ˆ๊นŒ?"

"'๊ธฐ๋ณธ'์ด ๋ฌด์Šจ ๋œป์ด์•ผ? ๋งŽ์ด ์•Œ์•„!"

"๋„ˆ๋ฌด ์ˆœ์ง„ํ•˜๊ตฐ์š”. ๋‹น์‹ ์€ ๊ทธ๊ฒƒ์˜ ์ ˆ๋ฐ˜๋„ ๋ชจ๋ฆ…๋‹ˆ๋‹ค. ๊ธฐ๊ปํ•ด์•ผ 10ํผ์„ผํŠธ์ž…๋‹ˆ๋‹ค."

"๋†๋‹ด์ด์•ผ. ๋˜ ๋ญ๊ฐ€ ์žˆ๋‹ˆ?"

"๊ฐ์ฒด ๊ณ„์ธต์˜ ์—ญ์ง๋ ฌํ™”(๋‹คํ˜•์„ฑ ์—ญ์ง๋ ฌํ™”), ์ปฌ๋ ‰์…˜์˜ ์—ญ์ง๋ ฌํ™”, ๊ทธ๋ฆฌ๊ณ  ํ›จ์”ฌ ๋”! Jackson ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ํฌ๊ณ  ๊ฐ•๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์†”์งํžˆ, ๋‹น์‹ ์€ ํ‘œ๋ฉด์„ ๊ธ๊ธฐ ์‹œ์ž‘ํ–ˆ์„ ๋ฟ์ž…๋‹ˆ๋‹ค."

"์ข‹์•„, ๊ทธ๋Ÿผ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๋งํ•ด์ค˜. ๋‚˜๋Š” ๊ท€๊ฐ€ ๋ฉ€์—ˆ์–ด."

"๋งค ๋ ˆ์Šจ์„ ํ†ตํ•ด ์ ์  ๋” ๋˜‘๋˜‘ํ•ด์ง€๋Š” ๊ฒƒ์ด ์ •๋ง ์ฆ๊ฒ์Šต๋‹ˆ๋‹ค!"

"๊ธ€์Ž„, ๋„์™€์ฃผ๊ฒŒ ๋˜์–ด ๊ธฐ์ฉ๋‹ˆ๋‹ค, ๋กœ๋ด‡ ์นœ๊ตฌ!"

"์ค€๋น„๋์–ด? ๊ทธ๋Ÿผ ์ž˜ ๋“ค์–ด."

"์ด๋ฏธ ๋ฐฐ์šด ๊ฒƒ์ฒ˜๋Ÿผ ์ฃผ์„์€ ์ง๋ ฌํ™”์™€ ์—ญ์ง๋ ฌํ™” ๋ชจ๋‘์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์ง๋ ฌํ™”์—๋Š” ์—ญ์ง๋ ฌํ™”๋ณด๋‹ค ํ›จ์”ฌ ์ ์€ ์ •๋ณด๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค."

์ž๋ฐ” ํด๋ž˜์Šค JSON
class Cat
{
 public String name = "missy";
 public Cat[] cats = new Cat[0];
}
{
 "name": "missy",
 "cats": []
}
class Cat
{
 public String name = "missy";
 public List cats = new ArrayList<Cat>();
}
{
 "name": "missy",
 "cats": []
}
class Cat
{
 public String name = "missy";
 public List cats = new LinkedList<Cat>();
}
{
 "name": "missy",
 "cats": []
}

"Array, ArrayList, LinkedList ๋ฐ ๊ธฐํƒ€ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋Š” JSON ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜๋ฉ๋‹ˆ๋‹ค."

"ํ•˜์ง€๋งŒ JSON ๋ฐฐ์—ด์„ ์—ญ์ง๋ ฌํ™”ํ•  ๋•Œ ArrayList ๋˜๋Š” LinkedList ์ค‘ ์–ด๋–ค ๊ฐœ์ฒด๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?"

"๋งž์•„์š”. ํด๋ž˜์Šค ๋ฉค๋ฒ„๊ฐ€ ์ธํ„ฐํŽ˜์ด์Šค(์˜ˆ: public List<Cat> cats )์ธ ๊ฒฝ์šฐ ์–ด๋–ค ๊ฐœ์ฒด์— ์†์„ฑ์„ ๋ถ€์—ฌํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ?"

"์ง๋ ฌํ™” ํ•ด์ œ ์ค‘์— ํ•„๋“œ์— ์ถ”๊ฐ€ ์ฃผ์„์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๋Œ€์ƒ ํด๋ž˜์Šค๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์˜ˆ๋ฅผ ๋ณด์‹ญ์‹œ์˜ค."

JSON์—์„œ ๊ฐœ์ฒด ๋ณ€ํ™˜
public static void main(String[] args) throws IOException
{
 String jsonString = ""{\"name\":\"Missy\",\"cats\":[{\"name\":\"Timmy\"},{\"name\":\"Killer\"}]}"";
 StringReader reader = new StringReader(jsonString);
 ObjectMapper mapper = new ObjectMapper();
 Cat cat = mapper.readValue(reader, TypeFactory.collectionType(ArrayList.class, Cat.class));
}
๊ฐœ์ฒด๊ฐ€ JSON์—์„œ ์—ญ์ง๋ ฌํ™”๋˜๋Š” ํด๋ž˜์Šค
@JsonAutoDetect
class Cat {
 public String name;
 public List&ltCat> cats = new ArrayList<>();
 Cat() {
 }
}

"์ฆ‰, ๋งคํผ .readValue ๋ฉ”์„œ๋“œ์˜ ๋‘ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ญ์ง๋ ฌํ™” ์ค‘์— ์‚ฌ์šฉํ•  ํด๋ž˜์Šค ๋ชฉ๋ก์„ ์ „๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. "

"์ข‹์Šต๋‹ˆ๋‹ค. ํŽธ๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ JSON ๋ฐฐ์—ด์„ ArrayList ๋˜๋Š” LinkedList ๋“ฑ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์œผ๋กœ ์—ญ์ง๋ ฌํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

"์ฃผ์„ ์‚ฌ์šฉ์— ๋Œ€ํ•ด์„œ๋„ ์–ธ๊ธ‰ํ•˜์…จ๋Š”๋ฐ ์–ด๋–ป๊ฒŒ ํ•˜์‹œ๋‚˜์š”?"

"์‰ฝ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค."

JSON์—์„œ ๊ฐœ์ฒด ๋ณ€ํ™˜
public static void main(String[] args) throws IOException
{
 String jsonString = ""{\"name\":\"Missy\",\"cats\":[{\"name\":\"Timmy\"},{\"name\":\"Killer\"}]}"";
 StringReader reader = new StringReader(jsonString);

 ObjectMapper mapper = new ObjectMapper();

 Cat cat = mapper.readValue(reader, Cat.class);
}
๊ฐœ์ฒด๊ฐ€ JSON์—์„œ ์—ญ์ง๋ ฌํ™”๋˜๋Š” ํด๋ž˜์Šค
@JsonAutoDetect
class Cat
{
 public String name;
 @JsonDeserialize(as = ArrayList.class, contentAs = Cat.class)
 public List&ltCat> cats = new ArrayList<>();
 Cat() {
 }
}

" ์‚ฌ์šฉํ•  List ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ตฌํ˜„์„ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด @JsonDeserialize(as = ArrayList.class, contentAs = Cat.class) ์ฃผ์„์„ 5ํ–‰์— ์ถ”๊ฐ€ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค ."

"์•„. ๊ทธ๋ ‡๊ตฌ๋‚˜. ์ •๋ง ๊ฐ„๋‹จํ•˜๋‹ค."

"ํ•˜์ง€๋งŒ ๋” ์žˆ์Šต๋‹ˆ๋‹ค. List์˜ ๋ฐ์ดํ„ฐ ์œ ํ˜•์ด ์ธํ„ฐํŽ˜์ด์Šค์ด๊ธฐ๋„ ํ•˜๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?"

"์—ฌ๊ธฐ์—์„œ๋„ ์ฃผ์„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๊นŒ?"

"์˜ˆ, ๋™์ผํ•ฉ๋‹ˆ๋‹ค. ๋งค๊ฐœ๋ณ€์ˆ˜ ์œ ํ˜•์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค."

์ปฌ๋ ‰์…˜ ์œ ํ˜• ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•
๋ชฉ๋ก @JsonDeserialize(contentAs = ValueTypeImpl.class)
์ง€๋„ @JsonDeserialize(keyAs = KeyTypeImpl.class)

"๋ฉ‹์ง€๋‹ค! ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๋Š” ๋‹ค์–‘ํ•œ ์ƒํ™ฉ์— ํ•„์š”ํ•œ ์ฃผ์„์ด ์ •๋ง ๋งŽ๋‹ค."

"๊ทธ๊ฒŒ ์ „๋ถ€๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์šฐ๋ฆฌ๋ฅผ ์ฃผ์š” ๊ณผ์ •์œผ๋กœ ์ธ๋„ํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ ํ”„๋กœ์ ํŠธ์—์„œ ํด๋ž˜์Šค๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ๊ณณ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋™์ผํ•œ ๊ธฐ๋ณธ ํด๋ž˜์Šค ๋˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์ด์ œ ์ด๋Ÿฌํ•œ ํด๋ž˜์Šค๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์—ญ์ง๋ ฌํ™”ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ์ƒํ•ด ๋ณด์‹ญ์‹œ์˜ค. ์˜ˆ๋ฅผ ๋“ค์–ด:"

๊ฐœ์ฒด๋ฅผ JSON์œผ๋กœ ๋ณ€ํ™˜
public static void main(String[] args) throws IOException
{
 Cat cat = new Cat();
 cat.name = "Missy";
 cat.age = 5;

 Dog dog = new Dog();
 dog.name = "Killer";
 dog.age = 8;
 dog.owner = "Bill Jefferson";

 ArrayList<Pet> pets = new ArrayList<Pet>();
 pets.add(cat);
 pets.add(dog);

 StringWriter writer = new StringWriter();
 ObjectMapper mapper = new ObjectMapper();
 mapper.writeValue(writer, pets);
 System.out.println(writer.toString());
}
๊ฐœ์ฒด๊ฐ€ JSON์œผ๋กœ ๋ณ€ํ™˜๋˜๋Š” ํด๋ž˜์Šค
@JsonAutoDetect
class Pet
{
 public String name;
}

@JsonAutoDetect
class Cat extends Pet
{
 public int age;
}

@JsonAutoDetect
class Dog extends Pet
{
 public int age;
 public String owner;
}
์ง๋ ฌํ™” ๊ฒฐ๊ณผ ๋ฐ ํ™”๋ฉด ์ถœ๋ ฅ:
[
 { "name" : "Missy", "age" : 5},
 { "name" : "Killer", "age" : 8 , "owner" : "Bill Jeferson"}
]

"์—ฐ์žฌ ๊ฒฐ๊ณผ์— ์ฃผ๋ชฉํ•˜๋ผ."

"์ด ๋ฐ์ดํ„ฐ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ๋ฐ์ดํ„ฐ์™€ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฐ์ดํ„ฐ๋ฅผ Java ๊ฐœ์ฒด๋กœ ์—ญ์ง๋ ฌํ™”ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค."

"๋ช‡ ๊ฐ€์ง€ ๊ตฌ๋ณ„๋˜๋Š” ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. Dog์—๋Š” ์†Œ์œ ์ž ํ•„๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค."

"์˜ˆ, ํ•˜์ง€๋งŒ ์ด ํ•„๋“œ๋Š” null์ด๊ฑฐ๋‚˜ ์ง๋ ฌํ™” ์ค‘์— ์™„์ „ํžˆ ๊ฑด๋„ˆ๋›ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."

"์Œ, ์šฐ๋ฆฌ๊ฐ€ ์•Œ๊ณ  ์žˆ๋Š” ์ฃผ์„์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์œ ํ˜•์„ ์ง€์ •ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๊นŒ?"

"์•„๋‹ˆ์˜ค. ์—ญ์ง๋ ฌํ™” ํ›„์— ๋‹จ์ผ ์ปฌ๋ ‰์…˜์—๋Š” ๋‹ค์–‘ํ•œ Cat ๋ฐ Dog ๊ฐœ์ฒด์™€ Pet์—์„œ ์ƒ์†ํ•  ์ˆ˜ ์žˆ๋Š” 12๊ฐœ์˜ ๋‹ค๋ฅธ ํด๋ž˜์Šค๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค."

"๋„๋Œ€์ฒด ์—ฌ๊ธฐ์„œ ๋ฌด์—‡์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?"

"์—ฌ๊ธฐ์„œ๋Š” ๋‘ ๊ฐ€์ง€๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค."

"๋จผ์ € ํ•œ ์œ ํ˜•์„ ๋‹ค๋ฅธ ์œ ํ˜•๊ณผ ๊ตฌ๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ํŠน์ • ํ•„๋“œ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ํ•„๋“œ๊ฐ€ ์—†์œผ๋ฉด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค."

"๋‘ ๋ฒˆ์งธ๋กœ, ยซ๋‹คํ˜•์„ฑ ์—ญ์ง๋ ฌํ™”ยป ํ”„๋กœ์„ธ์Šค๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋Š” ํŠน์ˆ˜ ์ฃผ์„์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค."

๊ฐœ์ฒด๋ฅผ JSON์œผ๋กœ ๋ณ€ํ™˜
public static void main(String[] args) throws IOException
{
 Cat cat = new Cat();
 cat.name = "Missy";
 cat.age = 5;

 Dog dog = new Dog();
 dog.name = "Killer";
 dog.age = 8;
 dog.owner = "Bill Jeferson";

 House house = new House();
 house.pets.add(dog);
 house.pets.add(cat);

 StringWriter writer = new StringWriter();
 ObjectMapper mapper = new ObjectMapper();
 mapper.writeValue(writer, house);
 System.out.println(writer.toString());
}
๊ฐœ์ฒด๊ฐ€ JSON์œผ๋กœ ๋ณ€ํ™˜๋˜๋Š” ํด๋ž˜์Šค
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type")
@JsonSubTypes({
@JsonSubTypes.Type(value = Cat.class, name = "cat"),
@JsonSubTypes.Type(value = Dog.class, name = "dog")
})
class Pet
{
 public String name;
}

class Cat extends Pet
{
 public int age;
}

class Dog extends Pet
{
 public int age;
 public String owner;
}

class House
{
 public List&ltPet> pets = new ArrayList<>();
}
์ง๋ ฌํ™” ๊ฒฐ๊ณผ ๋ฐ ํ™”๋ฉด ์ถœ๋ ฅ:
{
 "pets" : [
 {"type" : "dog", "name" : "Killer", "age" : 8, "owner" : "Bill Jeferson"},
 {"type" : "cat", "name" : "Missy", "age" : 5}
]
}

์ฃผ์„์„ ์‚ฌ์šฉํ•˜์—ฌ JSON ํ‘œํ˜„์— Cat ํด๋ž˜์Šค ์— ๋Œ€ํ•œ cat ๊ฐ’ ๊ณผ Dog ํด๋ž˜์Šค ์— ๋Œ€ํ•œ dog ๊ฐ’์„ ๋ณด์œ ํ•  type ์ด๋ผ๋Š” ํŠน์ˆ˜ ํ•„๋“œ๊ฐ€ ํฌํ•จ๋จ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค . ์ด ์ •๋ณด๋Š” ๊ฐœ์ฒด๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ์—ญ์ง๋ ฌํ™”ํ•˜๋Š” ๋ฐ ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์—ญ์ง๋ ฌํ™” ์ค‘์— ์ƒ์„ฑํ•  ๊ฐœ์ฒด์˜ ์œ ํ˜•์€ ์œ ํ˜• ํ•„๋“œ์˜ ๊ฐ’์— ๋”ฐ๋ผ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค.

"์ข…์ข… ํด๋ž˜์Šค ์ด๋ฆ„์ด ์œ ํ˜• ํ•„๋“œ(์˜ˆ: ยซcom.example.entity.Cat.classยป)์˜ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉ๋˜์ง€๋งŒ ์ด๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์•„๋‹™๋‹ˆ๋‹ค. JSON์„ ์ˆ˜์‹ ํ•˜๋Š” ์™ธ๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ๋‹ค์Œ์˜ ์ด๋ฆ„์„ ์–ด๋–ป๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์„ค์ƒ๊ฐ€์ƒ์œผ๋กœ, ํด๋ž˜์Šค๋Š” ๋•Œ๋•Œ๋กœ ์ด๋ฆ„์ด ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค. ํŠน์ • ํด๋ž˜์Šค๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ๊ณ ์œ ํ•œ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค."

"๋ฉ‹์ง€๋‹ค! ํ•œ์ˆจ. ์—ญ์ง๋ ฌํ™”๊ฐ€ ์ด๋ ‡๊ฒŒ ๋ณต์žกํ•œ์ง€ ๋ชฐ๋ž๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ฏธ์„ธ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด ์ด๋ ‡๊ฒŒ ๋งŽ๋‹ค."

"๋„ค. ์ด๊ฒƒ์€ ๋‹น์‹ ์—๊ฒŒ ์ƒˆ๋กœ์šด ๊ฐœ๋…์ด์ง€๋งŒ ์ด๊ฒƒ์€ ๋‹น์‹ ์„ ์ฒœ์žฌ ํ”„๋กœ๊ทธ๋ž˜๋จธ๋กœ ๋งŒ๋“ค์–ด ์ค„ ์‹ค์šฉ์ ์ธ ์ง€์‹์ž…๋‹ˆ๋‹ค."

"์•„๋ฏธ๊ณ ๋Š” ๋ฉ‹์ง„ ํ”„๋กœ๊ทธ๋ž˜๋จธ์•ผ. ๋ฉ‹์ง€๋‹ค!"

"์•Œ์•˜์–ด. ๊ฐ€์„œ ์‰ฌ์–ด."