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
|
// switch_default
|
||||||
mw.visitLabel(dflt);
|
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.aload(JSON_READER);
|
||||||
mw.lload(FEATURES);
|
mw.invokevirtual(TYPE_JSON_READER, "getNameHashCodeLCase", "()J");
|
||||||
mw.invokevirtual(TYPE_JSON_READER, "isSupportSmartMatch", "(J)Z");
|
mw.invokeinterface(TYPE_OBJECT_READER, "getFieldReaderLCase", METHOD_DESC_GET_FIELD_READER);
|
||||||
mw.ifeq(fieldReaderNull_);
|
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 {
|
} else {
|
||||||
for (int i = 0; i < fieldReaderArray.length; ++i) {
|
for (int i = 0; i < fieldReaderArray.length; ++i) {
|
||||||
Label next_ = new Label();
|
Label next_ = new Label();
|
||||||
|
|
@ -1961,7 +1964,7 @@ public class ObjectReaderCreatorASM
|
||||||
|
|
||||||
mw.visitLabel(dflt);
|
mw.visitLabel(dflt);
|
||||||
|
|
||||||
if (!disableSmartMatch) {
|
if (!disableSmartMatch && !(context.objectReaderAdapter instanceof ObjectReaderNoneDefaultConstructor)) {
|
||||||
Label fieldReaderNull_ = new Label();
|
Label fieldReaderNull_ = new Label();
|
||||||
if ((readerFeatures & JSONReader.Feature.SupportSmartMatch.mask) == 0) {
|
if ((readerFeatures & JSONReader.Feature.SupportSmartMatch.mask) == 0) {
|
||||||
mw.lload(FEATURES);
|
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