0. ๋ฌธ์ ์ํฉ
-> JsonObject์์ String์ธ ๊ฐ์ toString() ๋ฉ์๋๋ฅผ ํ์ฉํด ๊ฐ์ ์ฐธ์กฐํ์ง๋ง, ์์ธ์ง \"A\" ์ ํํ๋ก ๋ฌธ์์ด ์์ ๋ฐ์ดํ๊น์ง ์ถ๊ฐ๋ ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ๊ณ ์์๋ค
1. ๊ณต๋ถํ ๋ด์ฉ
JsonObject.get(memberName).toString() ๋ฉ์๋๋ฅผ ํ์ฉํ ๋ ์ฃผ์ํ ์ฌํญ
๊ฐ์ฅ ๊ธฐ๋ณธ์ธ Object์ toString() ๋ฉ์๋๋
public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
๋ก์ง์ ๊ฐ์ง๊ณ ์๋ค
์ด ๋ก์ง์ ํตํด ํธ์ถํ ๊ฒฝ์ฐ, ํด๋น ๊ฐ์ฒด์ "์ฃผ์"๋ฅผ ๋ฌธ์์ด๋ก ๋ฐํ๋ฐ์ ์ ์๋ค
์ด์ ๋ค๋ฅด๊ฒ JsonObject์ ๊ฒฝ์ฐ,
์์ ๊ฐ์ฒด์ธ JsonElement์์ ์ฌ์ ์ํ toString() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค
@Override
public String toString() {
try {
StringWriter stringWriter = new StringWriter();
JsonWriter jsonWriter = new JsonWriter(stringWriter);
jsonWriter.setLenient(true);
Streams.write(this, jsonWriter);
return stringWriter.toString();
} catch (IOException e) {
throw new AssertionError(e);
}
}
1) StringWriter ํด๋์ค์ธ stringWriter ๊ฐ์ฒด ์์ฑ : java.io ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํด๋์ค๋ก, ๋ด๋ถ์์ StringBuffer ํด๋์ค๋ฅผ ์ฌ์ฉํ ๋ฐ์ดํฐ ์ฐ๊ธฐ ์์ ์ ํ๋ค
2) JsonWriter : stringWriter ๊ฐ์ฒด๋ฅผ ๋งค๊ฐ๋ณ์๋ก ํ ์๋ก์ด JsonWrter ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
public JsonWriter(Writer out) {
this.out = Objects.requireNonNull(out, "out == null");
}
-> null ์ฒดํฌ๋ฅผ ์ํํ ํ ํด๋น ๊ฐ์ฒด๋ฅผ ์ฃผ์ ํ๋ค
3) jsonWriter.setLenient(true) :
ํด๋น ๊ฐ์ฒด๊ฐ json ํ์ค ์์์ ์๊ฒฉํ๊ฒ ์ค์ํ ๊ฒ์ธ์ง ์ฌ๋ถ๋ฅผ ์ค์ ํ๋ค. true๋ก ์ค์ ๋๋ฏ๋ก, ํ์์ ๋ง์ง์๋ ๋ฐ์ดํฐ๊ฐ ์ ๋ ฅ๋ ๊ฒฝ์ฐ JsonParseException ๋ฑ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค
4) Streams.write(this, jsonWriter) :
public static void write(JsonElement element, JsonWriter writer) throws IOException {
TypeAdapters.JSON_ELEMENT.write(writer, element);
}
ํด๋น ๋ฉ์๋ ์์์ ํธ์ถํ๋ write ๋ฉ์๋๋ ์ถ์ ๋ฉ์๋๋ก,
TypeAdapters ํด๋์ค์์ ์ฌ์ ์ํ๊ณ ์๋ค
@Override public void write(JsonWriter out, JsonElement value) throws IOException {
if (value == null || value.isJsonNull()) {
out.nullValue();
} else if (value.isJsonPrimitive()) {
JsonPrimitive primitive = value.getAsJsonPrimitive();
if (primitive.isNumber()) {
out.value(primitive.getAsNumber());
} else if (primitive.isBoolean()) {
out.value(primitive.getAsBoolean());
} else {
out.value(primitive.getAsString());
}
} else if (value.isJsonArray()) {
out.beginArray();
for (JsonElement e : value.getAsJsonArray()) {
write(out, e);
}
out.endArray();
} else if (value.isJsonObject()) {
out.beginObject();
for (Map.Entry<String, JsonElement> e : value.getAsJsonObject().entrySet()) {
out.name(e.getKey());
write(out, e.getValue());
}
out.endObject();
} else {
throw new IllegalArgumentException("Couldn't write " + value.getClass());
}
}
};
JsonObject์ ๊ฒฝ์ฐ, ๊ธฐ์กด JsonElement์ entrySet()๋ฅผ ์ํํ๋ฉด์ jsonWriter ๊ฐ์ฒด๋ฅผ ํ์ฉ value(JsonElement)์ key๋ out.name() ๋ฉ์๋๋ก, value๋ write() ์ฌ๊ท ํธ์ถ๋ก ์ฌ๋ฐ๋ฅด๊ฒ JSON ๋ฌธ์์ด๋ก ๋ณํํ๋ ๊ณผ์ ์ ํตํด ์ง๋ ฌํํ๋ค
-> ** ์ด ๊ณผ์ ์์ jsonWriter ๊ฐ์ฒด๋ JSON ํ์ค๊ท๊ฒฉ์ ์ค์ํด์ผ ํ๋ฏ๋ก, ๊ธฐ์กด ๋ฐ์ดํฐ์ ๋ฐ์ดํ๋ฅผ ์ถ๊ฐํ๋ค
์ฆ, JsonObejct.get(memberName).toString()์ ๋ฐ์ดํ๋ฅผ ํ๋ฒ ๋ ์์ฐ๋ ๊ฒ์ด๋ค
๊ทธ๋ ๊ธฐ ๋๋ฌธ์, ์ํ๋ ๊ฐ์ ์ํด์
JsonObejct.get(memberName).getAsString(); ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค
'TIL, WIL > TIL๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| 11.25 TIL : Mybatis ์กฐ๊ฑด๋ฌธ ๊ด๋ จ (0) | 2025.11.25 |
|---|---|
| 10.21 TIL : SQL ํํฐ๋ฅผ ํตํ ๋ฐ์ดํฐ ์ ์ (0) | 2025.10.22 |
| 07. 03 TIL : @Configuration ํด๋์ค (1) | 2025.07.03 |
| 04. 29 TIL : SQL ์ฟผ๋ฆฌ์์ CASE ๋ฌธ์ ์ค๋ณต ์ฌ์ฉ (0) | 2025.04.29 |
| 04. 06 TIL : ์ธํฐ๋ท/ ์ ์ก ๊ณ์ธต(IP, TCP, UDP) (0) | 2025.04.06 |