Java 将JSON中的BasicNameValuePair映射到Jackson

Java 将JSON中的BasicNameValuePair映射到Jackson,java,android,json,serialization,jackson,Java,Android,Json,Serialization,Jackson,我目前正在尝试反序列化一个API结果,如下所示 [{"name":"MyName","value":"MyValue"},{"name":"MyName2","value":"MyValue2"}] 由于这是来自org.apache.http.message.BasicNameValuePair的内部类,因此我无法以任何方式对其进行注释或编辑。但是我看到(从其他android项目中)很多人在使用这个类。有什么办法可以让它工作吗?从BasicNameValuePair序列化为String有效。

我目前正在尝试反序列化一个API结果,如下所示

[{"name":"MyName","value":"MyValue"},{"name":"MyName2","value":"MyValue2"}]


由于这是来自
org.apache.http.message.BasicNameValuePair
的内部类,因此我无法以任何方式对其进行注释或编辑。但是我看到(从其他android项目中)很多人在使用这个类。有什么办法可以让它工作吗?从
BasicNameValuePair
序列化为
String
有效。

请尝试在参数名称中不使用保留关键字,然后重试。“name”、“value”

Jackson使用反射创建类的实例。默认情况下,它需要一个无参数构造函数。
BasicNameValuePair
类没有这样的构造函数。它有一个具有两个参数的构造函数,一个用于
name
,另一个用于
value

通常,如果您控制了该类,则可以使用
@JsonProperty
注释构造函数参数,以便Jackson使用该构造函数而不是无参数构造函数。因为您无法控制代码,所以请使用mixin

像这样声明一个类

public static abstract class BasicNameValuePairMixIn {
     private BasicNameValuePairMixIn(@JsonProperty("name") String name, @JsonProperty("value") String value) { }
}
然后像这样配置您的
ObjectMapper

// configuration for Jackson/fasterxml 
objectMapper.addMixInAnnotations(BasicNameValuePair.class, BasicNameValuePairMixIn.class);
Jackson现在将使用mixin作为类的模板


如果您使用的是旧版本的Jackson,请使用所述的配置。

这是一组地图。我不明白这个答案。你能澄清一下吗?我也不明白。你是上帝,我赞美你!
public static abstract class BasicNameValuePairMixIn {
     private BasicNameValuePairMixIn(@JsonProperty("name") String name, @JsonProperty("value") String value) { }
}
// configuration for Jackson/fasterxml 
objectMapper.addMixInAnnotations(BasicNameValuePair.class, BasicNameValuePairMixIn.class);