This commit is contained in:
Looly
2024-09-10 20:19:36 +08:00
parent 264d24b54c
commit eec27cdc40
30 changed files with 618 additions and 222 deletions

View File

@@ -16,36 +16,41 @@
package org.dromara.hutool.json;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class IssueI6LBZATest {
@Test
public void parseJSONStringTest() {
final String a = "\"a\"";
final Object parse = JSONUtil.parse(a);
Assertions.assertEquals(String.class, parse.getClass());
assertEquals(JSONPrimitive.class, parse.getClass());
assertEquals(a, parse.toString());
}
@Test
public void parseJSONStringTest2() {
final String a = "'a'";
final Object parse = JSONUtil.parse(a);
Assertions.assertEquals(String.class, parse.getClass());
assertEquals(JSONPrimitive.class, parse.getClass());
assertEquals("\"a\"", parse.toString());
}
@Test
public void parseJSONErrorTest() {
final String a = "a";
final Object parse = JSONUtil.parse(a);
Assertions.assertEquals(String.class, parse.getClass());
Assertions.assertEquals("\"a\"", parse);
assertEquals(JSONPrimitive.class, parse.getClass());
assertEquals("\"a\"", parse.toString());
}
@Test
public void parseJSONNumberTest() {
final String a = "123";
final Object parse = JSONUtil.parse(a);
Assertions.assertEquals(Integer.class, parse.getClass());
final JSON parse = JSONUtil.parse(a);
assertEquals(JSONPrimitive.class, parse.getClass());
assertEquals(123, ((JSONPrimitive)parse).getValue());
assertEquals(Integer.class, ((JSONPrimitive)parse).getValue().getClass());
}
}

View File

@@ -59,8 +59,8 @@ public class IssueI7M2GZTest {
entity.setList(list);
final String json = JSONUtil.toJsonStr(entity);
//Console.log(json);
final MyEntity<JSONBeanParserImpl> result = JSONUtil.toBean(json, new TypeReference<MyEntity<JSONBeanParserImpl>>() {});
Assertions.assertEquals("new Object", result.getList().get(0).getName());
Assertions.assertNotNull(result.getList().get(0).getParsed());
Assertions.assertEquals(Integer.valueOf(12), result.getList().get(0).getParsed());

View File

@@ -53,29 +53,29 @@ public class JSONUtilTest {
void parseEmptyValue() {
// https://www.rfc-editor.org/rfc/rfc8259#section-7
// 未被包装的空串理解为null
Object parse = JSONUtil.parse("");
JSON parse = JSONUtil.parse("");
assertNull(parse);
parse = JSONUtil.parse("\"\"");
assertEquals("\"\"", parse);
assertEquals("\"\"", parse.toString());
}
@Test
public void parseValueTest() {
Object parse = JSONUtil.parse(123);
assertEquals(123, parse);
JSON parse = JSONUtil.parse(123);
assertEquals(123, ((JSONPrimitive)parse).getValue());
parse = JSONUtil.parse("\"abc\"");
assertEquals("\"abc\"", parse);
assertEquals("\"abc\"", parse.toString());
parse = JSONUtil.parse("\"\\\"bc\"");
assertEquals("\"\\\"bc\"", parse);
assertEquals("\"\\\"bc\"", parse.toString());
parse = JSONUtil.parse("true");
assertEquals(true, parse);
assertEquals(true, ((JSONPrimitive)parse).getValue());
parse = JSONUtil.parse("False");
assertEquals(false, parse);
assertEquals(false, ((JSONPrimitive)parse).getValue());
parse = JSONUtil.parse("null");
assertNull(parse);

View File

@@ -23,6 +23,7 @@ import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import java.util.Arrays;
import java.util.TimeZone;
public class JSONEngineTest {
@@ -43,6 +44,12 @@ public class JSONEngineTest {
Arrays.stream(engineNames).forEach(this::assertWriteLocalDateFormat);
}
@Test
void writeTimeZoneTest() {
// TODO Hutool无法序列化TimeZone等特殊对象
Arrays.stream(engineNames).forEach(this::assertWriteTimeZone);
}
private void assertWriteDateFormat(final String engineName) {
final DateTime date = DateUtil.parse("2024-01-01 01:12:21");
final BeanWithDate bean = new BeanWithDate(date, TimeUtil.of(date));
@@ -78,4 +85,16 @@ public class JSONEngineTest {
jsonString = engine.toJsonString(bean);
Assertions.assertEquals("{\"date1\":null,\"date2\":null}", jsonString);
}
private void assertWriteTimeZone(final String engineName) {
final TimeZone timeZone = TimeZone.getTimeZone("GMT+08:00");
final JSONEngine engine = JSONEngineFactory.createEngine(engineName);
String jsonString = engine.toJsonString(timeZone);
Assertions.assertEquals("\"GMT+08:00\"", jsonString);
engine.init(JSONEngineConfig.of().setIgnoreNullValue(false));
jsonString = engine.toJsonString(timeZone);
Assertions.assertEquals("\"GMT+08:00\"", jsonString);
}
}