java 解析JSON字符串

JAVA解析json字符串:根据城市itemName名称获取其码itemCode

1、json字符串

[
{"childList":
        [{"childList":
            [{"childList":[],"id":374,"itemCode":"110101","itemName":"东城区","itemNameEn":"DONGCHENGQU","parentId":35},
            {"childList":[],"id":375,"itemCode":"110102","itemName":"西城区","itemNameEn":"XICHENGQU","parentId":35},
            {"childList":[],"id":376,"itemCode":"110105","itemName":"朝阳区","itemNameEn":"CHAOYANGQU","parentId":35},
            {"childList":[],"id":377,"itemCode":"110106","itemName":"丰台区","itemNameEn":"FENGTAIQU","parentId":35},
            {"childList":[],"id":378,"itemCode":"110107","itemName":"石景山区","itemNameEn":"SHIJINGSHANQU","parentId":35},
            {"childList":[],"id":379,"itemCode":"110108","itemName":"海淀区","itemNameEn":"HAIDIANQU","parentId":35},
            {"childList":[],"id":380,"itemCode":"110109","itemName":"门头沟区","itemNameEn":"MENTOUGOUQU","parentId":35},
            {"childList":[],"id":381,"itemCode":"110111","itemName":"房山区","itemNameEn":"FANGSHANQU","parentId":35},
            {"childList":[],"id":382,"itemCode":"110112","itemName":"通州区","itemNameEn":"TONGZHOUQU","parentId":35},
            {"childList":[],"id":383,"itemCode":"110113","itemName":"顺义区","itemNameEn":"SHUNYIQU","parentId":35},
            {"childList":[],"id":384,"itemCode":"110114","itemName":"昌平区","itemNameEn":"CHANGPINGQU","parentId":35},
            {"childList":[],"id":385,"itemCode":"110115","itemName":"大兴区","itemNameEn":"DAXINGQU","parentId":35},
            {"childList":[],"id":386,"itemCode":"110116","itemName":"怀柔区","itemNameEn":"HUAIROUQU","parentId":35},
            {"childList":[],"id":387,"itemCode":"110117","itemName":"平谷区","itemNameEn":"PINGGUQU","parentId":35},
            {"childList":[],"id":388,"itemCode":"110228","itemName":"密云县","itemNameEn":"MIYUNXIAN","parentId":35},
            {"childList":[],"id":389,"itemCode":"110229","itemName":"延庆县","itemNameEn":"YANQINGXIAN","parentId":35}],
        "id":35,"itemCode":"110100","itemName":"北京市","itemNameEn":"BEIJING","parentId":1}],
    "id":1,"itemCode":"110000","itemName":"北京市","itemNameEn":"BEIJING","parentId":0}
]

2、方法:

private static String citystr = "json字符串(上面)";

//json字符串转map

public static Map<String, Object> JsonToMap(JSONObject json) {
    
        Map<String, Object> columnValMap = new HashMap<String, Object>();
        Set<String> jsonKeys = json.keySet();
        for (Object key : jsonKeys) {
            Object JsonValObj = json.get(key);
            if (JsonValObj instanceof JSONArray) {
                columnValMap.put((String) key,JsonToList((JSONArray) JsonValObj));
            } else if (JsonValObj instanceof JSONObject) {
                columnValMap.put((String) key,JsonToMap((JSONObject) JsonValObj));
            } else {
                columnValMap.put((String) key, JsonValObj);
            }
        }
        return columnValMap;
    }

public static Object JsonToList(JSONArray jsonArr) {
        List<Object> jsonObjList = new ArrayList<Object>();
        for (Object obj : jsonArr) {
            if (obj instanceof JSONArray) {
                jsonObjList.add(JsonToList((JSONArray) obj));
            } else if (obj instanceof JSONObject) {
                jsonObjList.add(JsonToMap((JSONObject) obj));
            } else {
                jsonObjList.add(obj);
            }
        }
        return jsonObjList;
    }
    /**
     *
     * Description:得到开户省code
     *
     * @param
     * @return String
     * @throws
     * @Author liujianguang
     * Create Date: 2015年5月11日 下午2:59:18
     */
    public static String getProvinceCode(String provinceName){
        String result = "";
        JSONArray obj = (JSONArray) JSONArray.parse(citystr);
        for(int i=0;i<obj.size();i++){
            Map<String, Object> dataMap = JsonToMap(obj.getJSONObject(i));
            if(((String)dataMap.get("itemName")).equals(provinceName)&&dataMap.get("parentId").equals(0)){
                result = (String)dataMap.get("itemCode");
            }
        }
        return result;
    }
    
    /**
     *
     * Description:得到开户市
     *
     * @param
     * @return String
     * @throws
     * @Author liujianguang
     * Create Date: 2015年5月11日 下午3:14:51
     */
    public static String getCityCode(String cityName){
        String result = "";
        JSONArray obj = (JSONArray) JSONArray.parse(citystr);
        for(int i=0;i<obj.size();i++){
            Map<String, Object> dataMap = JsonToMap(obj.getJSONObject(i));
            @SuppressWarnings("unchecked")
            List<Map<String, Object>> cityListMap = (List<Map<String, Object>>)dataMap.get("childList");
            for(int n = 0;n<cityListMap.size();n++){
                if((cityListMap.get(n).get("itemName")).equals(cityName)){
                    result = (String)cityListMap.get(n).get("itemCode");
                }
            }
        }
        return result;
    }
    
    public static void main(String[] args){
        System.out.println(getProvinceCode("北京市"));
    }

时间: 2024-08-02 05:10:59

java 解析JSON字符串的相关文章

java多种方式解析json字符串

第一种:用net.sf.json硬解.缺点:要求字段名称和json字符串中的字段名一样,字段命名会违反驼峰规则,也不利于拓展: JSONArray jsonArray = JSONArray.fromObject(str);  JSONObject jObj = jsonArray.getJSONObject(0);  User user= (User)jObj.toBean(jObj,User.class); 第二种:用Gson解析json字符串.优点:写法简单,字段名称只要使用@Serial

通过Json和Gson,快速生成和解析json字符串

1,首先我们要先明白json与gson有什么区别 其实他们是完全不同的概念: json是一种数据格式,便于数据传输,存储,交换. gson则是一种组件库,就是通过Gson我们可以把java中的对象(gson.toJson()),转换成Json字符串,当然反过来也是可以的(gson.fromJson); 2,代码 首先我们需要JSon和Gson这两个jar包 package com.json.dome; import java.util.ArrayList;import java.util.Lis

如何解析json字符串及返回json数据到前端

前言:最近需要实现的任务是:写若干个接口,并且接口中的请求数据是json格式,然后按照请求参数读取前端提前整理好的json数据,并且将json数据返回到服务器端. 主要的工具:Gson  2.8.2 项目支撑:springboot maven 0.前导--了解一下基本的json语法 JSON是一种类似 XML的语言,是用了存储和交换文本信息的语法.它的全称为JavaScript Object Notation(JavaScript 对象表示法).与xml对比,它更小.更快,更易解析. 想要更好的

Java解析JSON对象

今天学习一下Java 解析 JSON 准备工作 参考文档 1) www.json.org 2 ) 参考公司其他人的代码(这个就不说了) 依赖jar包 1) org.json.jar 提供以下我的网盘链接 http://pan.baidu.com/s/1jG2zSwe 主要的类 JSON主要有两种结构 1)name/value 的集合 2)value 的集合,在大多数语言中的list,array等,这里的 value 个人觉得就是一个JSON,也就是说是JSON的集合 JAVA处理JSON的类 1

JS的全局函数eval解析JSON字符串函数

JavaScript eval() 函数 定义和用法 eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码. 语法 eval(string) 参数 描述 string 必需.要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句. 返回值 通过计算 string 得到的值(如果有的话). 说明 该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回.因此请不要为 eval() 函数传递 String

jquery中解析JSON字符串的办法

data.msg传递了C#中构造的JSON字符串,使用下面两种在jquery中解析,都能正常工作 //解析返回的数据 var jsonValue = jQuery.parseJSON(data.msg); var jsonValue = eval('(' + data.msg + ')'); 附: /构造JSON字符串 string jsonStr = "{\"verifyOpinion\":\"" + temp.verifyResult + "

C#解析JSON字符串总结

JSON文件读取到内存中就是字符串,.NET操作JSON就是生成与解析JSON字符串. 操作JSON通常有以下几种方式: 1. 原始方式:按照JSON字符串自己来解析. 2. 通用方式[★★★★★]:这种方式是使用开源的类库Newtonsoft.Json(下载地址http://json.codeplex.com/).下载后添加dll引用就能用. 首先添加引用:using Newtonsoft.Json; 新增:本地dll下载:Newtonsoft.Json.rar   引用:using Newt

js jquery前台解析json字符串

一.js解析json字符串 eval()和JSON.parse() 对于服务器返回的JSON字符串,如果jquery异步请求没做类型说明,或者以字符串方式接受,那么需要做一次对象化处理,就是将该字符串放于eval()中执行一次.这种方式也适合以普通javascipt方式获取json对象,以下举例说明: var dataObj=eval("("+data+")");//转换为json对象 为什么eval这里要添加 "("+data+")&

Jquery解析json字符串、json数组

<!doctype html> <html> <head> <meta charset="utf-8"> <script src="../js/libs/jquery-1.6.2.min.js"></script> </head> <body> <hr /> <h3>解析json字符串.json数组</h3> <input typ