Skip to content

Commit

Permalink
enum support fastjson 1.x JSONField#unwrapped, for issue #2525
Browse files Browse the repository at this point in the history
  • Loading branch information
wenshao committed May 7, 2024
1 parent 89a6c29 commit 897bf44
Show file tree
Hide file tree
Showing 2 changed files with 93 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1166,6 +1166,13 @@ private void processJSONField1x(FieldInfo fieldInfo, Annotation annotation) {
}
break;
}
case "unwrapped": {
boolean unwrapped = (Boolean) result;
if (unwrapped) {
fieldInfo.features |= FieldInfo.UNWRAPPED_MASK;
}
break;
}
default:
break;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
package com.alibaba.fastjson.v2issues;

import com.alibaba.fastjson2.JSON;
import com.alibaba.fastjson2.annotation.JSONField;
import lombok.Data;
import org.junit.jupiter.api.Test;

import static org.junit.jupiter.api.Assertions.assertEquals;

public class Issue2525 {
@Test
public void testMutated() {
StandardGetQry standardGetQry = new StandardGetQry();
StandardBaseModel standardBaseModel = new StandardBaseModel();
standardBaseModel.setCode("2");
standardBaseModel.setCategory("NEW_CALL_STATUS");
standardGetQry.setStandardBaseModel(standardBaseModel);
String jsonStr = JSON.toJSONString(standardGetQry);
assertEquals("{\"standardCategory\":\"NEW_CALL_STATUS\",\"standardCode\":\"2\"}", jsonStr);

StandardGetQry standardGetQry2 = JSON.parseObject(jsonStr, StandardGetQry.class);
assertEquals("{\"standardCategory\":\"NEW_CALL_STATUS\",\"standardCode\":\"2\"}", JSON.toJSONString(standardGetQry2));
}

@Data
public static class StandardGetQry {
/**
* 基础数据
*/
@JSONField(unwrapped = true)
private StandardBaseModel standardBaseModel;
}

@Data
public static class StandardBaseModel {
/**
* 逻辑编码-标准KEY
*/
@JSONField(name = "standardCode")
private String code;

/**
* 标准类别
*/
@JSONField(name = "standardCategory")
private String category;
}

@Test
public void testMutated1() {
StandardGetQry1 standardGetQry = new StandardGetQry1();
StandardBaseModel1 standardBaseModel = new StandardBaseModel1();
standardBaseModel.setCode("2");
standardBaseModel.setCategory("NEW_CALL_STATUS");
standardGetQry.setStandardBaseModel(standardBaseModel);
String jsonStr = com.alibaba.fastjson.JSON.toJSONString(standardGetQry);
assertEquals("{\"standardCategory\":\"NEW_CALL_STATUS\",\"standardCode\":\"2\"}", jsonStr);

StandardGetQry1 standardGetQry2 = com.alibaba.fastjson.JSON.parseObject(jsonStr, StandardGetQry1.class);
assertEquals("{\"standardCategory\":\"NEW_CALL_STATUS\",\"standardCode\":\"2\"}", com.alibaba.fastjson.JSON.toJSONString(standardGetQry2));
}

@Data
public static class StandardGetQry1 {
/**
* 基础数据
*/
@com.alibaba.fastjson.annotation.JSONField(unwrapped = true)
private StandardBaseModel1 standardBaseModel;
}

@Data
public static class StandardBaseModel1 {
/**
* 逻辑编码-标准KEY
*/
@com.alibaba.fastjson.annotation.JSONField(name = "standardCode")
private String code;

/**
* 标准类别
*/
@com.alibaba.fastjson.annotation.JSONField(name = "standardCategory")
private String category;
}
}

0 comments on commit 897bf44

Please sign in to comment.