/src/main/java/com/alibaba/fastjson/serializer/FieldSerializer.java
Java | 97 lines | 73 code | 6 blank | 18 comment | 0 complexity | b3c57978e89c27f5a82c486c0e4a987f MD5 | raw file
- /*
- * Copyright 1999-2101 Alibaba Group.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- package com.alibaba.fastjson.serializer;
- import java.io.IOException;
- import java.lang.reflect.Field;
- import java.lang.reflect.Method;
- import com.alibaba.fastjson.annotation.JSONField;
- import com.alibaba.fastjson.util.FieldInfo;
- /**
- * @author wenshao<szujobs@hotmail.com>
- */
- public abstract class FieldSerializer implements Comparable<FieldSerializer> {
- protected final FieldInfo fieldInfo;
- private final String double_quoted_fieldPrefix;
- private final String single_quoted_fieldPrefix;
- private final String un_quoted_fieldPrefix;
- private boolean writeNull = false;
- public FieldSerializer(FieldInfo fieldInfo){
- super();
- this.fieldInfo = fieldInfo;
- fieldInfo.setAccessible(true);
- this.double_quoted_fieldPrefix = '"' + fieldInfo.getName() + "\":";
- this.single_quoted_fieldPrefix = '\'' + fieldInfo.getName() + "\':";
- this.un_quoted_fieldPrefix = fieldInfo.getName() + ":";
- JSONField annotation = fieldInfo.getAnnotation(JSONField.class);
- if (annotation != null) {
- for (SerializerFeature feature : annotation.serialzeFeatures()) {
- if (feature == SerializerFeature.WriteMapNullValue) {
- writeNull = true;
- }
- }
- }
- }
- public boolean isWriteNull() {
- return writeNull;
- }
- public Field getField() {
- return fieldInfo.getField();
- }
- public String getName() {
- return fieldInfo.getName();
- }
- public Method getMethod() {
- return fieldInfo.getMethod();
- }
- public void writePrefix(JSONSerializer serializer) throws IOException {
- SerializeWriter out = serializer.getWriter();
- if (serializer.isEnabled(SerializerFeature.QuoteFieldNames)) {
- if (serializer.isEnabled(SerializerFeature.UseSingleQuotes)) {
- out.write(single_quoted_fieldPrefix);
- } else {
- out.write(double_quoted_fieldPrefix);
- }
- } else {
- out.write(un_quoted_fieldPrefix);
- }
- }
- public int compareTo(FieldSerializer o) {
- return this.getName().compareTo(o.getName());
- }
- public Object getPropertyValue(Object object) throws Exception {
- return fieldInfo.get(object);
- }
- public abstract void writeProperty(JSONSerializer serializer, Object propertyValue) throws Exception;
- }