net(RestFul服务JSON响应解析问题)如何将JSON响应字符串中相同项的列表转换为Java对象?

net(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

我使用以下代码调用Restful服务:(Java.net实现)

方法2: 我还在下面的代码段中使用了正确的Java对象以及setter和getter

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);