fix only return null when fist char is n, for issue #3537 (#3541)
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (11, macos-latest) (push) Has been cancelled Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (11, ubuntu-24.04) (push) Has been cancelled Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (11, windows-latest) (push) Has been cancelled Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (17, macos-latest) (push) Has been cancelled Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (17, ubuntu-24.04) (push) Has been cancelled Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (17, windows-latest) (push) Has been cancelled Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (21, macos-latest) (push) Has been cancelled Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (21, ubuntu-24.04) (push) Has been cancelled Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (21, windows-latest) (push) Has been cancelled Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (8, macos-latest) (push) Has been cancelled Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (8, ubuntu-24.04) (push) Has been cancelled Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (8, windows-latest) (push) Has been cancelled Details

* fix only return null when fist char is n, for issue #3537

* fix improve test case
This commit is contained in:
yanxutao89 2025-05-12 10:27:45 +08:00 committed by GitHub
parent 3b5d8d6fd1
commit ab36a7104c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 41 additions and 1 deletions

View File

@ -123,6 +123,7 @@ public class FieldReaderObject<T>
Object value;
try {
char first = jsonReader.current();
if (jsonReader.nextIfNullOrEmptyString()) {
if (defaultValue != null) {
value = defaultValue;
@ -135,7 +136,7 @@ public class FieldReaderObject<T>
} else if (fieldClass == Optional.class) {
value = Optional.empty();
} else {
value = null;
value = first == 'n' ? null : "";
}
} else if (jsonReader.jsonb) {
if (fieldClass == Object.class) {

View File

@ -0,0 +1,39 @@
package com.alibaba.fastjson2.issues_3500;
import com.alibaba.fastjson2.JSON;
import org.junit.jupiter.api.Test;
import java.util.Collections;
import java.util.List;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull;
public class Issue3537 {
@Test
public void test() {
String json = "{\"value\":\"\"}";
SimpleTestValue s = JSON.parseObject(json, SimpleTestValue.class);
assertEquals("", s.getValue());
json = "{\"value\":null}";
s = JSON.parseObject(json, SimpleTestValue.class);
assertNull(s.getValue());
}
public static class SimpleTestValue {
private Object value;
// 标准 getter/setter
public Object getValue() {
return value;
}
public void setValue(Object value) {
this.value = value;
}
// 自定义 getter 会导致问题
public List<String> getRelates() {
return Collections.emptyList();
}
}
}