求大神解析一下这个JSON

问题描述

求大神解析一下这个JSON

Value {"data":[{"school_name":"西北农林科技大学","school_id":"8"},{"school_name":"西北大学","school_id":"6"},{"school_name":"西北工业大学","school_id":"5"},{"school_name":"西北政法大学","school_id":"2"},{"school_name":"西安交通大学","school_id":"4"},{"school_name":"西安建筑科技大学","school_id":"10"},{"school_name":"西安电子科技大学","school_id":"3"},{"school_name":"西安邮电大学","school_id":"1"},{"school_name":"长安大学","school_id":"9"},{"school_name":"陕西师范大学","school_id":"7"},{"school_name":"陕西科技大学","school_id":"11"}],"msg":"列表获取成功","status":0}
用2个数组接收school_name和school_id
用java里的方法

解决方案

//第一次解析;
public Map parseStatus(String JSONStr) {
JSONArray jsonArray = JSONArray.fromObject(JSONStr);
int n = jsonArray.size();
Map map = new HashMap();
for (int i = 0; i < n; i++) {
JSONObject obj = jsonArray.getJSONObject(i);
if (obj == null)
continue;
if (obj.containsKey("data")) {
map.put("data", obj.getString("data"));
}
if (obj.containsKey("status")) {
map.put("status", obj.getString("status"));
}
if(obj.containsKey("msg")){
map.put("msg", obj.getString("msg"));
}
}
return map;
}
//拿到map中data;
String JSONSchool=map.get("data").toString();
public List parseschool(String JSONSchool){
List schoolVoList=new ArrayList();
JSONArray jsonArray = JSONArray.fromObject(JSONStr);
int n = jsonArray.size();
for (int i = 0; i < n; i++) {
JSONObject obj = jsonArray.getJSONObject(i);
SchoolVo schoolVo=new SchoolVo();
if (obj == null)
continue;
if (obj.containsKey("school_name")) {
schoolVo.setF_jht_name(obj.getString("school_name"));
}
if (obj.containsKey("school_id")) {
schoolVo.setF_jht_id(obj.getInt("school_id"));
}
schoolVoList.add(schoolVo);
}
return schoolVoList;
}

解决方案二:

楼上答的很漂亮啊

解决方案三:

使用json-lib-2.2.2-jdk15.jar进行JSON解析。示例代码:可直接运行,需要jar可百度或者联系我。

 import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Map;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

public class JSONParse {
    public static void main(String[] args) {

        String value = read("src/json.txt",null);
        Map<String,String> map = parseSchoolInfo(value);
        if(map!=null){
            System.out.println(map.toString());
        }else{
            System.out.println("no data parsed.");
        }

    }

    public static Map<String,String> parseSchoolInfo(String json){
        if(json==null||"".equals(json)){
            System.out.println("empty json.");
            return null;
        }

        JSONObject object = JSONObject.fromObject(json);
        if(object==null||!object.containsKey("data")){
            System.out.println("没有数据信息.");
            return null;
        }

        if(!object.containsKey("status")||object.getInt("status")!=0){
            System.out.println("信息状态错误.");
            return null;
        }

        JSONArray schoolArray = object.getJSONArray("data");
        if(schoolArray==null||schoolArray.size()==0){
            System.out.println("没有解析到数据信息");
            return null;
        }

        //最终遍历data中的JSON数组解析存入map
        Map<String,String>schools = new HashMap<String,String>();
        for(int i = 0;i<schoolArray.size();i++){
            JSONObject school = schoolArray.getJSONObject(i);
            String school_name = school.getString("school_name");
            String school_id = school.getString("school_id");
            schools.put(school_id, school_name);
        }

        return schools;
    }

    /**
     * 读取指定文件的文本内容,返回文本值是一个长串,原文本中的换行不会被读入
     * @param  fileName 文件名称
     * @return
     */
    public static String read(String fileName,String charSet){
        if(fileName==null||"".equals(fileName)){
            System.out.println("文件名称为空...");
            return "";
        }

        //设置字符编码
        if(charSet==null||"".equals(charSet)){
            charSet = "UTF-8";
        }

        File file = new File(fileName);
        FileInputStream fin = null;
        StringBuffer buffer = new StringBuffer();
        try {
            fin = new FileInputStream(file);
            BufferedReader reader = new BufferedReader(new InputStreamReader(fin,charSet));
            String content = reader.readLine();
            while(content!=null){
                buffer.append(content);
                //循环读取下一行,没有这行代码就是死循环的啦。。。
                content = reader.readLine();
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            if(fin!=null){
                try {
                    fin.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

        return buffer.toString();
    }
}

解决方案四:

{data:
[
{
"school_name":"西北农林科技大学",
"school_id":"8"
}
]
}
看清楚结构了吗?
1,先创建一个类Info,就两个属性,school_name,school_id
2,用gson直接将json转换成List,完事儿。。。

时间: 2024-10-31 21:33:44

求大神解析一下这个JSON的相关文章

安卓小白 求大神解析json 求代码

问题描述 安卓小白 求大神解析json 求代码 { "date": "20140617", "stories": [ { "title": "千万不要干傻事", "ga_prefix": "09", "images": [ "http://www.baidu.com/img/baidu_sylogo1.gif" ], "

控件-mscomm串口波形绘制范例,求大神解析这三个函数,急急急,绘制波形图的原理是什么,拜托了

问题描述 mscomm串口波形绘制范例,求大神解析这三个函数,急急急,绘制波形图的原理是什么,拜托了 //串口void CPort_testDlg::OnComm() { //if(stop)return; VARIANT m_input1; COleSafeArray m_input2; long lengthi; BYTE data[600]; CString str; int ai=0bi=0ci=0di=0; int sum=0; if(m_Comm.GetCommEvent()==2)

求解- 做了一个已经成功运行的项目了,今天运行的时候,到登陆界面点登陆总是返回到登陆界面,求大神解析

问题描述 做了一个已经成功运行的项目了,今天运行的时候,到登陆界面点登陆总是返回到登陆界面,求大神解析 运行之后,到登陆界面.然后点击登陆,就不停的再登陆界面循环登陆界面,进不到系统里 解决方案 检查下代码是不是被修改过了,还有用的是否同一个浏览器,说不定你客户端js代码写的不兼容,导致相关没有发送过去导致无法验证什么的 解决方案二: 你的代码是不是又改过了. 解决方案三: 实在不行给浏览器清一下cookie缓存吧 解决方案四: 检查一下为什么一直在登录界面,是登录失败还是程序过滤器拦截了 解决

window cmd ftp-window cmd 窗口ftp命令如何下载文件夹啊,用mget *只能下载文件,求大神解析

问题描述 window cmd 窗口ftp命令如何下载文件夹啊,用mget *只能下载文件,求大神解析 window cmd 窗口ftp命令如何下载文件夹啊,用mget * 只能下载文件,求大神解析 解决方案 用dir列出问价,然后依次下载.建议还是写个程序. 解决方案二: 用dir列出文件,然后依次下载.建议还是写个程序. 解决方案三: 命令行估计不行,只能用工具了,或者调用filezilla等工具看是否有命令行

怎样把txt数据改成json格式啊,求大神赐教~

问题描述 怎样把txt数据改成json格式啊,求大神赐教~ 我在做大数据可视化,有一堆txt数据需要自动转成json格式,并且将json数据导入js文件中,具体怎样实现,求大神给个小例子,,,还有JSP能不能调用外部的json数据啊 解决方案 可以用Java打开txt文件,然后转换成json数据(推荐使用gson库进行解析). 大概流程如下: //获取文件内容.List context = Files.readAllLines(Paths.get(""123.txt"&quo

java报文解析!求大神指导!

问题描述 java报文解析!求大神指导! 大家帮我解析一下报文吧!我用的是UDP通信拿到数据,数据的类型是这样的S5W1449!p1r!p1r003B1s!S6WGGG00!p2r!p2r00003!p1r!p1r003B1s! 第0~2位为p1r或p2r,第3~6位为对应侧(p1r或p2r)的点位,第7位为状态位第8位为CRC校验位(将以上待发送的8位 异或)第9位为!结束位. 比如p1r!p1r003B1s!,我要拿到点位003B,要把它转化成十进制显示在我的界面画图!我要怎么解析报文!能写

request-Request();Attribute()这都是什么意思?求大神帮忙解析下下边语句,新手求学习

问题描述 Request():Attribute()这都是什么意思?求大神帮忙解析下下边语句,新手求学习 Request():Attribute()这都是什么意思?求大神帮忙解析下下边语句,新手求学习.跪求大神给解释一下,详细点,并且给推荐个学习方向.跪谢 action: super.getRequest().setAttribute("sCKTGLList", sCKTGLList); super.getRequest().setAttribute("iSOZGRZSZLi

求大神看下边json数据是不是有问题,万分感谢!!!

问题描述 求大神看下边json数据是不是有问题,万分感谢!!! http://a.yx.minfuzx.com/zhinan/0/1 不要用工具格式化.... 解决方案 你是客户端json类库用还是服务器端反序列用的?客户端json类库多那个逗号除非用IE7-浏览器,其他浏览器多那个逗号也没有问题. 直接replace掉就行, ] } } ==>] } } 如果存在多个,需要用正则 s*,\s*] ==> ] 解决方案二: 最后的"http://m.yxjiakao.com/zhin

arraylist-关于ArrayList求大神为我解析以下几个问题,求大神细细道来,万分感激

问题描述 关于ArrayList求大神为我解析以下几个问题,求大神细细道来,万分感激 求大神为我解析以下几个问题:1.为什么保存的时候还要调用getList() ?2.为什么创建ArrayList?3.if()里什么意思?4. 第二段代码if{}最后一句什么意思?里边怎么就一个参数?5.第二段代码倒数第四句和第三句都什么意思?求大神细细道来,万分感激 public String getList() throws Exception { if ("""".equals