Skip to content

Commit

Permalink
修改 ArrayListTypeFieldDeserializer
Browse files Browse the repository at this point in the history
将json转换为实体类,当json数组中只有一个对象,没有放到中括弧中此时会报错. 修改后将对象存放到数组的第一个元素中.
  • Loading branch information
zhaojie committed May 18, 2016
1 parent 78cf6e8 commit 9cc6bc5
Showing 1 changed file with 10 additions and 11 deletions.
Expand Up @@ -18,11 +18,11 @@

public class ArrayListTypeFieldDeserializer extends FieldDeserializer {

private final Type itemType;
private int itemFastMatchToken;
private final Type itemType;
private int itemFastMatchToken;
private ObjectDeserializer deserializer;

public ArrayListTypeFieldDeserializer(ParserConfig mapping, Class<?> clazz, FieldInfo fieldInfo) {
public ArrayListTypeFieldDeserializer(ParserConfig mapping, Class<?> clazz, FieldInfo fieldInfo){
super(clazz, fieldInfo);

Type fieldType = fieldInfo.fieldType;
Expand Down Expand Up @@ -60,13 +60,13 @@ public void parseField(DefaultJSONParser parser, Object object, Type objectType,
}
}

@SuppressWarnings({"unchecked", "rawtypes"})
@SuppressWarnings({ "unchecked", "rawtypes" })
public final void parseArray(DefaultJSONParser parser, Type objectType, Collection array) {
Type itemType = this.itemType;
ObjectDeserializer itemTypeDeser = this.deserializer;

if (itemType instanceof TypeVariable //
&& objectType instanceof ParameterizedType) {
&& objectType instanceof ParameterizedType) {
TypeVariable typeVar = (TypeVariable) itemType;
ParameterizedType paramType = (ParameterizedType) objectType;

Expand Down Expand Up @@ -96,14 +96,11 @@ public final void parseArray(DefaultJSONParser parser, Type objectType, Collecti

final JSONLexer lexer = parser.lexer;

int token = lexer.token();

if (token == JSONToken.LBRACKET) {
if (lexer.token() == JSONToken.LBRACKET) {
parseArray(parser, array, itemType, itemTypeDeser, lexer);
} else {
}else {
if (itemTypeDeser == null) {
itemTypeDeser = deserializer = parser.getConfig().getDeserializer(itemType);
itemFastMatchToken = deserializer.getFastMatchToken();
}
Object val = itemTypeDeser.deserialze(parser, itemType, 0);
array.add(val);
Expand All @@ -118,7 +115,8 @@ private void parseArray(DefaultJSONParser parser, Collection array, Type itemTyp
}

lexer.nextToken(itemFastMatchToken);
for (int i = 0; ; ++i) {

for (int i = 0;; ++i) {
if (lexer.isEnabled(Feature.AllowArbitraryCommas)) {
while (lexer.token() == JSONToken.COMMA) {
lexer.nextToken();
Expand All @@ -140,6 +138,7 @@ private void parseArray(DefaultJSONParser parser, Collection array, Type itemTyp
continue;
}
}

lexer.nextToken(JSONToken.COMMA);
}

Expand Down

0 comments on commit 9cc6bc5

Please sign in to comment.