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