Skip to content

Commit

Permalink
JSONType.parserFeatures support 'Feature.NonPublicFieldSupport'
Browse files Browse the repository at this point in the history
  • Loading branch information
wenshao committed Nov 18, 2016
1 parent e053ea4 commit 8c30590
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -792,7 +792,7 @@ private boolean parseField(DefaultJSONParser parser, String key, Object object,
continue;
}
int fieldModifiers = field.getModifiers();
if ((fieldModifiers & Modifier.FINAL) != 0) {
if ((fieldModifiers & Modifier.FINAL) != 0 || (fieldModifiers & Modifier.STATIC) != 0) {
continue;
}
extraFieldDeserializers.put(fieldName, field);
Expand Down
31 changes: 31 additions & 0 deletions src/test/java/com/alibaba/json/bvt/bug/Issue_900_4.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package com.alibaba.json.bvt.bug;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.parser.Feature;
import com.alibaba.json.bvtVO.Issue900_CurrencyListResult;
import junit.framework.TestCase;

import java.util.ArrayList;

/**
* Created by wenshao on 2016/11/18.
*/
public class Issue_900_4 extends TestCase {
public void test_for_issue() throws Exception {
Issue900_CurrencyListResult result = JSON.parseObject("{\"payCurrencyList\":[\"abc\"]}", Issue900_CurrencyListResult.class, Feature.SupportNonPublicField);
assertEquals(1, result.getPayCurrencyList().size());
assertEquals("abc", result.getPayCurrencyList().get(0));
}

public static class CurrencyListResult {
public static final int VERSION = 1; // cache version, 如果结构改变, 需要同步修改版本号

// 可支付币种列表
private ArrayList<String> payCurrencyList;

public ArrayList<String> getPayCurrencyList() {
return payCurrencyList;
}

}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.alibaba.json.bvtVO;

import java.util.ArrayList;

/**
* Created by wenshao on 2016/11/18.
*/
public class Issue900_CurrencyListResult {
public static final int VERSION = 1; // cache version, 如果结构改变, 需要同步修改版本号

// 可支付币种列表
private ArrayList<String> payCurrencyList = new ArrayList<String>();

public ArrayList<String> getPayCurrencyList() {
return payCurrencyList;
}
}

0 comments on commit 8c30590

Please sign in to comment.