net(RestFul服务JSON响应解析问题)如何将JSON响应字符串中相同项的列表转换为Java对象?
我使用以下代码调用Restful服务:(Java.net实现) 方法2: 我还在下面的代码段中使用了正确的Java对象以及setter和getternet(RestFul服务JSON响应解析问题)如何将JSON响应字符串中相同项的列表转换为Java对象?,java,Java,我使用以下代码调用Restful服务:(Java.net实现) 方法2: 我还在下面的代码段中使用了正确的Java对象以及setter和getter ObjectMapper objectMapper = new ObjectMapper(); mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false); MyJavaReponseObject javaObj = mapper.readVal
ObjectMapper objectMapper = new ObjectMapper();
mapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
MyJavaReponseObject javaObj = mapper.readValue(json, MyJavaReponseObject.class);
这种方法也只读取Itm的一个对象,而不是所有对象,因为它不是JSON字符串中的数组格式。在JavaPOJO中,有没有更好的方法将所有对象(Itm)映射到单个对象列表 如果要解析json字符串本身,可以在响应对象中使用List类 我有一个带有json对象、一个响应和三个ITM的ResponseJSON类
static class ReponseJSON {
private Response Response;
@JsonProperty("Response")
public Response getResponse() {
return Response;
}
public void setResponse(Response Response) {
this.Response = Response;
}
static class Response {
private String rid;
private Itm Itm;
private List<Itm> listItm = new ArrayList<Itm>();
public Itm getItm() {
return Itm;
}
@JsonProperty("Itm")
public void setItm(Itm Itm) {
this.Itm = Itm;
listItm.add(Itm);
}
public String getRID() {
return rid;
}
public List<Itm> getItms() {
return listItm;
}
@JsonProperty("RID")
public void setRID(String rid) {
this.rid = rid;
}
static class Itm {
private Id id;
private String qw, name;
public String getQw() {
return qw;
}
public void setQw(String qw) {
this.qw = qw;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Id getId() {
return id;
}
public void setId(Id id) {
this.id = id;
}
static class Id {
private String ab, cd;
public String getCd() {
return cd;
}
public void setCd(String cd) {
this.cd = cd;
}
public String getAb() {
return ab;
}
public void setAb(String ab) {
this.ab = ab;
}
}
}
}
}
静态类ReponseJSON{
私人回应;
@JsonProperty(“响应”)
公共响应getResponse(){
返回响应;
}
公共无效设置响应(响应){
这个。反应=反应;
}
静态类响应{
私有字符串rid;
私人信息技术管理;
private List listItm=new ArrayList();
公共Itm getItm(){
返回Itm;
}
@JsonProperty(“Itm”)
公共无效设置Itm(Itm Itm){
这个.Itm=Itm;
列表Itm.add(Itm);
}
公共字符串getRID(){
返回rid;
}
公共列表getItms(){
返回列表ITM;
}
@JsonProperty(“RID”)
公共void setRID(字符串rid){
this.rid=rid;
}
静态类Itm{
私人身份证;
私有字符串qw,名称;
公共字符串getQw(){
返回qw;
}
公共无效设置qw(字符串qw){
this.qw=qw;
}
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
公共Id getId(){
返回id;
}
公共无效集合Id(Id){
this.id=id;
}
静态类Id{
私有字符串ab、cd;
公共字符串getCd(){
返回光盘;
}
公共无效设置cd(字符串cd){
this.cd=cd;
}
公共字符串getAb(){
返回ab;
}
公共void setAb(字符串ab){
this.ab=ab;
}
}
}
}
}
在响应类中,我有一个列表类,每当对象映射器调用这个类时,我都会保存一个Itm对象
static class Response {
... skip ..
private List<Itm> listItm = new ArrayList<Itm>();
... skip ..
@JsonProperty("Itm")
public void setItm(Itm Itm) {
this.Itm = Itm;
listItm.add(Itm);
}
}
静态类响应{
跳过
private List listItm=new ArrayList();
跳过
@JsonProperty(“Itm”)
公共无效设置Itm(Itm Itm){
这个.Itm=Itm;
列表Itm.add(Itm);
}
}
检查完整的源代码,如下所示
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JacksonParserTest {
static class ReponseJSON {
private Response Response;
@JsonProperty("Response")
public Response getResponse() {
return Response;
}
public void setResponse(Response Response) {
this.Response = Response;
}
static class Response {
private String rid;
private Itm Itm;
private List<Itm> listItm = new ArrayList<Itm>();
public Itm getItm() {
return Itm;
}
@JsonProperty("Itm")
public void setItm(Itm Itm) {
this.Itm = Itm;
listItm.add(Itm);
}
public String getRID() {
return rid;
}
public List<Itm> getItms() {
return listItm;
}
@JsonProperty("RID")
public void setRID(String rid) {
this.rid = rid;
}
static class Itm {
private Id id;
private String qw, name;
public String getQw() {
return qw;
}
public void setQw(String qw) {
this.qw = qw;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Id getId() {
return id;
}
public void setId(Id id) {
this.id = id;
}
static class Id {
private String ab, cd;
public String getCd() {
return cd;
}
public void setCd(String cd) {
this.cd = cd;
}
public String getAb() {
return ab;
}
public void setAb(String ab) {
this.ab = ab;
}
}
}
}
}
public static void main(String[] args) {
String responseJson =
"{\"Response\":{\"RID\":\"04'34'\","
+ "\"Itm\":{\"id\":{\"ab\":\"1\",\"cd\":\"12\"},\"qw\":\"JK\",\"name\":\"abcd\"}"
+ ",\"Itm\":{\"id\":{\"ab\":\"2\",\"cd\":\"34\"},\"qw\":\"JK\",\"name\":\"asdf\"}"
+ ",\"Itm\":{\"id\":{\"ab\":\"3\",\"cd\":\"12\"},\"qw\":\"JK\",\"name\":\"fghj\"}"
+ "}} ";
ObjectMapper mapper = new ObjectMapper();
ReponseJSON responseObj = null;
try {
responseObj = mapper.readValue(responseJson, ReponseJSON.class);
ReponseJSON.Response response = responseObj.getResponse();
for(int i = 0; i < response.getItms().size(); i++)
{
ReponseJSON.Response.Itm item = response.getItms().get(i);
System.out.println(item.getId().getAb());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
导入java.io.File;
导入java.io.IOException;
导入java.util.ArrayList;
导入java.util.List;
导入com.fasterxml.jackson.annotation.JsonProperty;
导入com.fasterxml.jackson.core.JsonParseException;
导入com.fasterxml.jackson.core.JsonParser;
导入com.fasterxml.jackson.databind.DeserializationFeature;
导入com.fasterxml.jackson.databind.ObjectMapper;
公共类JacksonParserTest{
静态类responseJSON{
私人回应;
@JsonProperty(“响应”)
公共响应getResponse(){
返回响应;
}
公共无效设置响应(响应){
这个。反应=反应;
}
静态类响应{
私有字符串rid;
私人信息技术管理;
private List listItm=new ArrayList();
公共Itm getItm(){
返回Itm;
}
@JsonProperty(“Itm”)
公共无效设置Itm(Itm Itm){
这个.Itm=Itm;
列表Itm.add(Itm);
}
公共字符串getRID(){
返回rid;
}
公共列表getItms(){
返回列表ITM;
}
@JsonProperty(“RID”)
公共void setRID(字符串rid){
this.rid=rid;
}
静态类Itm{
私人身份证;
私有字符串qw,名称;
公共字符串getQw(){
返回qw;
}
公共无效设置qw(字符串qw){
this.qw=qw;
}
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
公共Id getId(){
返回id;
}
公共无效集合Id(Id){
this.id=id;
}
静态类Id{
私有字符串ab、cd;
公共字符串getCd(){
返回光盘;
}
公共无效设置cd(字符串cd){
this.cd=cd;
}
公共字符串getAb(){
返回ab;
}
公共void setAb(字符串ab){
this.ab=ab;
}
}
}
}
}
公共静态void main(字符串[]args){
字符串响应JSON=
“{\'Response\':{\'RID\':\'04'34'\”,”
+“\'Itm\':{\'id\':{\'ab\':\'1\',\'cd\':\'12\',\'qw\':\'JK\',\'name\':\'abcd\'”
+“,”Itm\“:{\”id\“:{\”ab\“:”2\“,”cd\“:”34\“},\”qw\“:”JK\“,”姓名\“:”asdf\“}”
+“,”Itm\“:{\”id\“:{\”ab\“:”3\“,”cd\“:”12\“},\”qw\“:”JK\“,”姓名\“:”fghj\“}”
static class Response {
... skip ..
private List<Itm> listItm = new ArrayList<Itm>();
... skip ..
@JsonProperty("Itm")
public void setItm(Itm Itm) {
this.Itm = Itm;
listItm.add(Itm);
}
}
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JacksonParserTest {
static class ReponseJSON {
private Response Response;
@JsonProperty("Response")
public Response getResponse() {
return Response;
}
public void setResponse(Response Response) {
this.Response = Response;
}
static class Response {
private String rid;
private Itm Itm;
private List<Itm> listItm = new ArrayList<Itm>();
public Itm getItm() {
return Itm;
}
@JsonProperty("Itm")
public void setItm(Itm Itm) {
this.Itm = Itm;
listItm.add(Itm);
}
public String getRID() {
return rid;
}
public List<Itm> getItms() {
return listItm;
}
@JsonProperty("RID")
public void setRID(String rid) {
this.rid = rid;
}
static class Itm {
private Id id;
private String qw, name;
public String getQw() {
return qw;
}
public void setQw(String qw) {
this.qw = qw;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Id getId() {
return id;
}
public void setId(Id id) {
this.id = id;
}
static class Id {
private String ab, cd;
public String getCd() {
return cd;
}
public void setCd(String cd) {
this.cd = cd;
}
public String getAb() {
return ab;
}
public void setAb(String ab) {
this.ab = ab;
}
}
}
}
}
public static void main(String[] args) {
String responseJson =
"{\"Response\":{\"RID\":\"04'34'\","
+ "\"Itm\":{\"id\":{\"ab\":\"1\",\"cd\":\"12\"},\"qw\":\"JK\",\"name\":\"abcd\"}"
+ ",\"Itm\":{\"id\":{\"ab\":\"2\",\"cd\":\"34\"},\"qw\":\"JK\",\"name\":\"asdf\"}"
+ ",\"Itm\":{\"id\":{\"ab\":\"3\",\"cd\":\"12\"},\"qw\":\"JK\",\"name\":\"fghj\"}"
+ "}} ";
ObjectMapper mapper = new ObjectMapper();
ReponseJSON responseObj = null;
try {
responseObj = mapper.readValue(responseJson, ReponseJSON.class);
ReponseJSON.Response response = responseObj.getResponse();
for(int i = 0; i < response.getItms().size(); i++)
{
ReponseJSON.Response.Itm item = response.getItms().get(i);
System.out.println(item.getId().getAb());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
{"Response":{"RID":"04'34'",
"Itms":[{"id":{"ab":"1","cd":"12"},"qw":"JK","name":"abcd "},
{"id":{"ab":"2","cd":"34"},"qw":"JK","name":"asdf "},
{"id":{"ab":"3","cd":"12"},"qw":"JK","name":"fghj "}]
}}
JSONObject jsonObject=new JSONObject(responseString);