私は「リストのネットワーク」について次のようなJSON応答解析する必要があります。これまでのところ、私は私の希望Network.javaのPOJOクラスに変換するcom.fasterxml.jacksonを使用していると、それがあった、今jsonライブラリを変更してjson配列をcom.fasterxml.jacksonからorg.codehaus.jacksonにデシリアライズしますか?
[
{
"Name": "bridge",
"Id": "f2de39df4171b0dc801e8002d1d999b77256983dfc63041c0f34030aa3977566",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"Internal": false,
"IPAM": {
"Driver": "default",
"Config": [
{
"Subnet": "172.17.0.0/16"
}
]
},
"Containers": {
"39b69226f9d79f5634485fb236a23b2fe4e96a0a94128390a7fbbcc167065867": {
"EndpointID": "ed2419a97c1d9954d05b46e462e7002ea552f216e9b136b80a7db8d98b442eda",
"MacAddress": "02:42:ac:11:00:02",
"IPv4Address": "172.17.0.2/16",
"IPv6Address": ""
}
},
"Options": {
"com.docker.network.bridge.default_bridge": "true",
"com.docker.network.bridge.enable_icc": "true",
"com.docker.network.bridge.enable_ip_masquerade": "true",
"com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
"com.docker.network.bridge.name": "docker0",
"com.docker.network.driver.mtu": "1500"
}
},
{
"Name": "none",
"Id": "e086a3893b05ab69242d3c44e49483a3bbbd3a26b46baa8f61ab797c1088d794",
"Scope": "local",
"Driver": "null",
"EnableIPv6": false,
"Internal": false,
"IPAM": {
"Driver": "default",
"Config": []
},
"Containers": {},
"Options": {}
},
{
"Name": "host",
"Id": "13e871235c677f196c4e1ecebb9dc733b9b2d2ab589e30c539efeda84a24215e",
"Scope": "local",
"Driver": "host",
"EnableIPv6": false,
"Internal": false,
"IPAM": {
"Driver": "default",
"Config": []
},
"Containers": {},
"Options": {}
}
]
を意図どおりに動作します。 jsonInputは、文字列として上記のJSONレスポンスである
public static List<Network> getNetworksFromResponse(String jsonInput, Network obj)
{
ObjectMapper mapper = new ObjectMapper();
try
{
return mapper.readValue(jsonInput, mapper.getTypeFactory().constructCollectionType(List.class, Network.class));
}
catch (Exception e)
{
e.printStackTrace();
}
return null;
}
: はここに私の古いコードです。ここでの問題は、単純なListネットワークリストpojoを使用するためのルート "Network"キーがないことです。だから私は、ネットワークのリストを返すメソッドにこのjsonレスポンス全体を渡さなければなりません。
Network.java:
public class Network
{
private String EnableIPv6;
private String Driver;
private String Name;
private String Labels;
private String Internal;
private String Id;
private Options Options;
private String Scope;
private IPAM IPAM;
public String getEnableIPv6()
{
return EnableIPv6;
}
@JsonProperty("EnableIPv6")
public void setEnableIPv6(String EnableIPv6)
{
this.EnableIPv6 = EnableIPv6;
}
public String getDriver()
{
return Driver;
}
@JsonProperty("Driver")
public void setDriver(String Driver)
{
this.Driver = Driver;
}
public String getName()
{
return Name;
}
@JsonProperty("Name")
public void setName(String Name)
{
this.Name = Name;
}
public String getInternal()
{
return Internal;
}
@JsonProperty("Internal")
public void setInternal(String Internal)
{
this.Internal = Internal;
}
public String getId()
{
return Id;
}
@JsonProperty("Id")
public void setId(String Id)
{
this.Id = Id;
}
public Options getOptions()
{
return Options;
}
@JsonProperty("Options")
public void setOptions(Options Options)
{
this.Options = Options;
}
public IPAM getIPAM()
{
return IPAM;
}
@JsonProperty("IPAM")
public void setIPAM(IPAM IPAM)
{
this.IPAM = IPAM;
}
public String getScope()
{
return Scope;
}
@JsonProperty("Scope")
public void setScope(String Scope)
{
this.Scope = Scope;
}
@Override
public String toString()
{
return "ClassPojo [EnableIPv6 = " + EnableIPv6 + ", Driver = " + Driver + ", Name = " + Name + ", Labels = " + Labels
+ ", Internal = " + Internal + ", Id = " + Id + ", Options = " + Options + ", IPAM = " + IPAM + ", Scope = "
+ Scope + "]";
}
}
今すぐorg.codehausライブラリを使用している他のいくつかの方法があり、今後のjarの競合があります。だから私はcom.codehaus.jacksonに私のcom.fasterxml.jacksonを変更する必要があります。 私はCodehausのLIBSのにインポートラインを変えてみました、それは私にこのエラーを与える:
The method getTypeFactory() is undefined for the type ObjectMapper
同等このmapper.readValue(...)のための方法またはCodehausの中getTypeFactory()メソッドは何? またはorg.codehaus.jacksonのmapper.getTypeFactory().constructCollectionType(List.class, Network.class)
の同等のメソッドは何ですか?
はい、あなたは最新のものを使用する必要がありますが、それがあったので、私はorg.codehaus.jacksonの瓶を使用し非常に巨大なコードベースを持っていますそのような短い予告で私が実際にそれをすることはできません。しかし、はい、com.fasterxml.jacksonからorg.codehaus.jacksonに行くことはお勧めしません。 – Siddharth