com.alibaba.fastjson2.reader.FieldReaderAnySetter Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of fastjson2 Show documentation
Show all versions of fastjson2 Show documentation
Fastjson is a JSON processor (JSON parser + JSON generator) written in Java
package com.alibaba.fastjson2.reader;
import com.alibaba.fastjson2.JSONException;
import com.alibaba.fastjson2.JSONReader;
import com.alibaba.fastjson2.schema.JSONSchema;
import java.lang.reflect.Method;
import java.lang.reflect.Type;
class FieldReaderAnySetter
extends FieldReaderObject {
FieldReaderAnySetter(
Type fieldType,
Class fieldClass,
int ordinal,
long features,
String format,
JSONSchema schema,
Method method) {
super("$$any$$", fieldType, fieldClass, ordinal, features, format, null, null, schema, method, null, null);
}
@Override
public ObjectReader getItemObjectReader(JSONReader jsonReader) {
if (itemReader != null) {
return itemReader;
}
return itemReader = jsonReader.getObjectReader(fieldType);
}
@Override
public void accept(T object, Object value) {
throw new UnsupportedOperationException();
}
@Override
public void processExtra(JSONReader jsonReader, Object object) {
String name = jsonReader.getFieldName();
ObjectReader itemObjectReader = getItemObjectReader(jsonReader);
Object value = itemObjectReader.readObject(jsonReader, fieldType, fieldName, 0);
try {
method.invoke(object, name, value);
} catch (Exception e) {
throw new JSONException(jsonReader.info("any set error"), e);
}
}
@Override
public void acceptExtra(Object object, String name, Object value) {
try {
method.invoke(object, name, value);
} catch (Exception e) {
throw new JSONException("any set error");
}
}
@Override
public boolean isReadOnly() {
return true;
}
@Override
public void readFieldValue(JSONReader jsonReader, T object) {
throw new UnsupportedOperationException();
}
}