/src/main/java/com/alibaba/fastjson/parser/deserializer/ListResolveFieldDeserializer.java
https://bitbucket.org/xiejuntao/xdesktop · Java · 63 lines · 50 code · 13 blank · 0 comment · 7 complexity · 1f2c7a5f3e7d3614fc269f083958a304 MD5 · raw file
- package com.alibaba.fastjson.parser.deserializer;
- import java.lang.reflect.Array;
- import java.lang.reflect.Type;
- import java.util.List;
- import java.util.Map;
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.parser.DefaultJSONParser;
- import com.alibaba.fastjson.util.TypeUtils;
- @SuppressWarnings("rawtypes")
- public final class ListResolveFieldDeserializer extends FieldDeserializer {
- private final int index;
- private final List list;
- private final DefaultJSONParser parser;
- public ListResolveFieldDeserializer(DefaultJSONParser parser, List list, int index){
- super(null, null);
- this.parser = parser;
- this.index = index;
- this.list = list;
- }
- @SuppressWarnings("unchecked")
- public void setValue(Object object, Object value) {
- list.set(index, value);
- if (list instanceof JSONArray) {
- JSONArray jsonArray = (JSONArray) list;
- Object array = jsonArray.getRelatedArray();
- if (array != null) {
- int arrayLength = Array.getLength(array);
- if (arrayLength > index) {
- Object item;
- if (jsonArray.getComponentType() != null) {
- item = TypeUtils.cast(value, jsonArray.getComponentType(), parser.getConfig());
- } else {
- item = value;
- }
- Array.set(array, index, item);
- }
- }
- }
- }
- public DefaultJSONParser getParser() {
- return parser;
- }
- @Override
- public void parseField(DefaultJSONParser parser, Object object, Type objectType, Map<String, Object> fieldValues) {
- }
- @Override
- public int getFastMatchToken() {
- return 0;
- }
- }