mirror of https://github.com/alibaba/fastjson2.git
bug fix for deserialize none-default-constructor
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (11, macos-latest) (push) Waiting to run
Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (11, ubuntu-20.04) (push) Waiting to run
Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (11, windows-latest) (push) Waiting to run
Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (17, macos-latest) (push) Waiting to run
Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (17, ubuntu-20.04) (push) Waiting to run
Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (17, windows-latest) (push) Waiting to run
Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (21, macos-latest) (push) Waiting to run
Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (21, ubuntu-20.04) (push) Waiting to run
Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (21, windows-latest) (push) Waiting to run
Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (8, macos-latest) (push) Waiting to run
Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (8, ubuntu-20.04) (push) Waiting to run
Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (8, windows-latest) (push) Waiting to run
Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (11, macos-latest) (push) Waiting to run
Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (11, ubuntu-20.04) (push) Waiting to run
Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (11, windows-latest) (push) Waiting to run
Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (17, macos-latest) (push) Waiting to run
Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (17, ubuntu-20.04) (push) Waiting to run
Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (17, windows-latest) (push) Waiting to run
Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (21, macos-latest) (push) Waiting to run
Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (21, ubuntu-20.04) (push) Waiting to run
Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (21, windows-latest) (push) Waiting to run
Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (8, macos-latest) (push) Waiting to run
Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (8, ubuntu-20.04) (push) Waiting to run
Details
Java CI / Test on JDK ${{ matrix.java }} OS ${{ matrix.os }} (8, windows-latest) (push) Waiting to run
Details
This commit is contained in:
parent
552091ef9e
commit
fe81a4a85b
|
|
@ -1329,30 +1329,33 @@ public class ObjectReaderCreatorASM
|
|||
// switch_default
|
||||
mw.visitLabel(dflt);
|
||||
|
||||
Label fieldReaderNull_ = new Label();
|
||||
boolean disableSmartMatch = context.disableSmartMatch();
|
||||
if (!disableSmartMatch && !(context.objectReaderAdapter instanceof ObjectReaderNoneDefaultConstructor)) {
|
||||
Label fieldReaderNull_ = new Label();
|
||||
|
||||
if ((readerFeatures & JSONReader.Feature.SupportSmartMatch.mask) == 0) {
|
||||
if ((readerFeatures & JSONReader.Feature.SupportSmartMatch.mask) == 0) {
|
||||
mw.aload(JSON_READER);
|
||||
mw.lload(FEATURES);
|
||||
mw.invokevirtual(TYPE_JSON_READER, "isSupportSmartMatch", "(J)Z");
|
||||
mw.ifeq(fieldReaderNull_);
|
||||
}
|
||||
|
||||
mw.aload(THIS);
|
||||
mw.aload(JSON_READER);
|
||||
mw.lload(FEATURES);
|
||||
mw.invokevirtual(TYPE_JSON_READER, "isSupportSmartMatch", "(J)Z");
|
||||
mw.ifeq(fieldReaderNull_);
|
||||
mw.invokevirtual(TYPE_JSON_READER, "getNameHashCodeLCase", "()J");
|
||||
mw.invokeinterface(TYPE_OBJECT_READER, "getFieldReaderLCase", METHOD_DESC_GET_FIELD_READER);
|
||||
mw.dup();
|
||||
mw.astore(FIELD_READER);
|
||||
mw.ifnull(fieldReaderNull_);
|
||||
|
||||
mw.aload(FIELD_READER);
|
||||
mw.aload(JSON_READER);
|
||||
mw.aload(OBJECT);
|
||||
mw.invokevirtual(TYPE_FIELD_READE, "readFieldValueJSONB", METHOD_DESC_READ_FIELD_VALUE);
|
||||
mw.goto_(L_FOR_INC); // continue
|
||||
|
||||
mw.visitLabel(fieldReaderNull_);
|
||||
}
|
||||
|
||||
mw.aload(THIS);
|
||||
mw.aload(JSON_READER);
|
||||
mw.invokevirtual(TYPE_JSON_READER, "getNameHashCodeLCase", "()J");
|
||||
mw.invokeinterface(TYPE_OBJECT_READER, "getFieldReaderLCase", METHOD_DESC_GET_FIELD_READER);
|
||||
mw.dup();
|
||||
mw.astore(FIELD_READER);
|
||||
mw.ifnull(fieldReaderNull_);
|
||||
|
||||
mw.aload(FIELD_READER);
|
||||
mw.aload(JSON_READER);
|
||||
mw.aload(OBJECT);
|
||||
mw.invokevirtual(TYPE_FIELD_READE, "readFieldValueJSONB", METHOD_DESC_READ_FIELD_VALUE);
|
||||
mw.goto_(L_FOR_INC); // continue
|
||||
|
||||
mw.visitLabel(fieldReaderNull_);
|
||||
} else {
|
||||
for (int i = 0; i < fieldReaderArray.length; ++i) {
|
||||
Label next_ = new Label();
|
||||
|
|
@ -1961,7 +1964,7 @@ public class ObjectReaderCreatorASM
|
|||
|
||||
mw.visitLabel(dflt);
|
||||
|
||||
if (!disableSmartMatch) {
|
||||
if (!disableSmartMatch && !(context.objectReaderAdapter instanceof ObjectReaderNoneDefaultConstructor)) {
|
||||
Label fieldReaderNull_ = new Label();
|
||||
if ((readerFeatures & JSONReader.Feature.SupportSmartMatch.mask) == 0) {
|
||||
mw.lload(FEATURES);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,25 @@
|
|||
package com.alibaba.fastjson2.issues;
|
||||
|
||||
import com.alibaba.fastjson2.JSON;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
public class Issue3435 {
|
||||
record Data6(int a, int b, int c, int d, int e, int f) {}
|
||||
record Data7(int a, int b, int c, int d, int e, int f, int g) {}
|
||||
|
||||
@Test
|
||||
public void test6() {
|
||||
String s6 = "{\"a\":0,\"b\":0,\"c\":0,\"d\":0,\"e\":0,\"f\":0}";
|
||||
Data6 d6 = JSON.parseObject(s6, Data6.class);
|
||||
assertEquals("{\"a\":0,\"b\":0,\"c\":0,\"d\":0,\"e\":0,\"f\":0}", JSON.toJSONString(d6));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test7() {
|
||||
String s7 = "{\"a\":0,\"b\":0,\"c\":0,\"d\":0,\"e\":0,\"f\":0,\"g\":0}";
|
||||
Data7 d7 = JSON.parseObject(s7, Data7.class);
|
||||
assertEquals("{\"a\":0,\"b\":0,\"c\":0,\"d\":0,\"e\":0,\"f\":0,\"g\":0}", JSON.toJSONString(d7));
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue