当前位置: 代码迷 >> Java相关 >> json多层集合嵌套解析(仅限GSON方式解析)
  详细解决方案

json多层集合嵌套解析(仅限GSON方式解析)

热度:85   发布时间:2016-04-22 20:46:16.0
json多层集合嵌套解析求助(仅限GSON方式解析)
 类似如下格式如何解析求帮助:【使用GSON 方式解析】
 
[
    {
        "code": 200,
        "response": [
            {
                "page": 1,
                "user": [
                    {
                        "name": "张三",
                        "age": 20,
                        "sex": "男"
                    },
                    {
                        "name": "李四",
                        "age": 21,
                        "sex": "男"
                    },
                    {
                        "name": "王五",
                        "age": 22,
                        "sex": "男"
                    }
                ]
            }
        ]
    }
]

------解决思路----------------------
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.reflect.InvocationTargetException;
import java.util.Arrays;
import com.google.gson.Gson;

public class Test {

/**
 * @param args
 * @throws IOException 
 * @throws InvocationTargetException 
 * @throws IllegalAccessException 
 * @throws NoSuchMethodException 
 * @throws IllegalArgumentException 
 * @throws SecurityException 
 */
public static void main(String[] args) throws IOException, SecurityException, IllegalArgumentException, NoSuchMethodException, IllegalAccessException, InvocationTargetException {


String str=getJsonStr();
Gson gson = new Gson();
ResultMsg[] resultMsgArray=gson.fromJson(str, ResultMsg[].class);
printlnMsg(resultMsgArray);
}


/**
 * 获得要转换的JSON字符串<br>
 * 这边为了方面我直接读的我本地的文件内容为你要转换的json字符串
 * @return
 * @throws IOException
 */
private static String getJsonStr() throws IOException{
StringBuffer sbf = new StringBuffer();
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream( "F:"+File.separator+"json.txt"),"UTF-8"));
//json字符串
String str="";
while((str=reader.readLine())!=null){
sbf.append(str);
}
reader.close();
return sbf.toString();
}

private static void printlnMsg(ResultMsg[] resultMsgArray){
if(null!=resultMsgArray){
System.out.println("结果:"+Arrays.toString(resultMsgArray));
}
}

}

class ResultMsg{
private Response[] response;
private String code;

public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public Response[] getResponse() {
return response;
}
public void setResponse(Response[] response) {
this.response = response;
}
@Override
public String toString() {
return "ResultMsg [response=" + Arrays.toString(response) + ", code="
+ code + "]";
}


}
class Response{
private String page;
private User[] user;
public String getPage() {
return page;
}
public void setPage(String page) {
this.page = page;
}
public User[] getUser() {
return user;
}
public void setUser(User[] user) {
this.user = user;
}
@Override
public String toString() {
return "Response [page=" + page + ", user=" + Arrays.toString(user)
+ "]";
}



}
class User {

private String name;
private String age;
private String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "User [name=" + name + ", age=" + age + ", sex=" + sex + "]";
}

}


上面这端代码把JSON结果封装成了一个ResultMsg数组的形式,楼主也可以根据自己的需要改装
  相关解决方案