Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何创建自定义Jackson映射器?_Java_Json_Spring_Serialization_Jackson - Fatal编程技术网

Java 如何创建自定义Jackson映射器?

Java 如何创建自定义Jackson映射器?,java,json,spring,serialization,jackson,Java,Json,Spring,Serialization,Jackson,我想用jackson为谷歌图表构建一个数据表,这样我就可以轻松创建一个json文件 我使用这个杰克逊版本: <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.2.3</version> </dependency>

我想用jackson为谷歌图表构建一个数据表,这样我就可以轻松创建一个json文件

我使用这个杰克逊版本:

<dependency>
   <groupId>com.fasterxml.jackson.core</groupId>
   <artifactId>jackson-databind</artifactId>
   <version>2.2.3</version>
</dependency>
这会生成一个Json字符串,如下所示:

{

}

问题是我的值对象这是一个抽象类我不想要这个类呈现为json对象我只想要一个键值对!因此,它不应导致:

“五”:{ “价值”:“汉斯” }

我只想要这个:“v”:“Hans”

我想我可以定义值对象是如何呈现的值对象不能是例如字符串、双精度或日期对象。。。如果是日期对象,则日期应转换为如下字符串:“v”:日期(2010,10,01)

如果是字符串或Double之类的其他对象,我想确定json字符串的外观

我的抽象类如下所示:

public abstract class Value { 

}

public class StringValue extends Value{

    String Value;
}



public class DoubleValue extends Value{

    Double Value; 
}


public class DateValue extends Value{

    Date Value;
}

为了实现您的目标,我将对您的代码进行以下更改:

public abstract class Value { 

}

public class StringValue extends Value{

    @JsonValue
    //do whatever else you need although I can't really see what that would be
    String Value;
}



public class DoubleValue extends Value{

    @JsonValue
    //do whatever else you need although I can't really see what that would be
    Double Value; 
}


public class DateValue extends Value{

    @JsonValue
    @DateFormat() //insert the relevant date code here
    Date Value;

}
从你发布的代码中,我看不出class
Value
的真正用途,但我在这里运行,因为我猜你对它做的比你发布的更多

public class SingleTableCell implements Serializable{

    private static final long serialVersionUID = 1L;    

    @JsonProperty("v")  
    private Value value;

    @JsonProperty("f")  
    private String formattedValue = null;


    public Value getValue() {       
        return value;   
    }


    public void setValue(Value value) {         
        this.value = value;     
    }


    public String getFormattedValue() {         
        return formattedValue;  
    }


    public void setFormattedValue(String formattedValue) {
        this.formattedValue = formattedValue;   
   }

}
"rows": [
    {
        "c": [
            {
                "v": {
                    "value": "Hans"
                },
                "f": null
            },
            {
                "v": {
                    "value": 3.4
                },
                "f": null
            }
        ]
    }
]
public abstract class Value { 

}

public class StringValue extends Value{

    String Value;
}



public class DoubleValue extends Value{

    Double Value; 
}


public class DateValue extends Value{

    Date Value;
}
public abstract class Value { 

}

public class StringValue extends Value{

    @JsonValue
    //do whatever else you need although I can't really see what that would be
    String Value;
}



public class DoubleValue extends Value{

    @JsonValue
    //do whatever else you need although I can't really see what that would be
    Double Value; 
}


public class DateValue extends Value{

    @JsonValue
    @DateFormat() //insert the relevant date code here
    Date Value;

}