we1rt 2021-08-23 21:51 采纳率: 50%
浏览 85
已结题

java如何给具有层级关系的json字符串做递归

JSON字符串如下:

{
"result":[
{
  "MINX": "118.02250279",
  "UPDATETIME": "20180703",
  "MINY": "27.04543333",
  "SHORTNAME": "",
  "LABELY": "29.11397432",
  "LABELX": "120.58933477",
  "OID": "330000-000-2120-浙江省",
  "NAME": "浙江省",
  "OBJECTID": "330000-000-2120-浙江省",
  "CENTERX": "120.58933477",
  "CODE": "330000000",
  "CITY": "",
  "TOWN": "",
  "children": [
    {
      "MINX": "118.33967503",
      "UPDATETIME": "20180629",
      "MINY": "29.1885947",
      "SHORTNAME": "",
      "LABELY": "29.87685909",
      "LABELX": "119.52685481",
      "OID": "330100-000-2130-杭州市",
      "NAME": "杭州市",
      "OBJECTID": "330100-000-2130-杭州市",
      "CENTERX": "119.52685481",
      "CODE": "330100000",
      "CITY": "",
      "TOWN": "",
      "children": [
        {
          "MINX": "120.13241596",
          "UPDATETIME": "201612",
          "MINY": "30.19538921",
          "SHORTNAME": "",
          "LABELY": "30.22807413",
          "LABELX": "120.17105609",
          "OID": "330102-000-2140-上城区",
          "NAME": "上城区",
          "OBJECTID": "330102-000-2140-上城区",
          "CENTERX": "120.17105609",
          "CODE": "330102000",
          "CITY": "杭州市",
          "TOWN": "",
          "children": [
            {
              "MINX": "120.14936765",
              "UPDATETIME": "201612",
              "MINY": "30.23018409",
              "SHORTNAME": "",
              "LABELY": "30.23930124",
              "LABELX": "120.15866596",
              "OID": "330102-000-2150-清波街道",
              "NAME": "清波街道",
              "OBJECTID": "330102-000-2150-清波街道",
              "CENTERX": "120.15866596",
              "CODE": "330102001",
              "CITY": "杭州市",
              "TOWN": "",
              "children": [
                {
                  "MINX": "120.16431845",
                  "UPDATETIME": "201612",
                  "MINY": "30.24266719",
                  "SHORTNAME": "",
                  "LABELY": "30.24266719",
                  "LABELX": "120.16431845",
                  "OID": "330102-000-2216-清河坊社区",
                  "NAME": "清河坊社区",
                  "OBJECTID": "330102-000-2216-清河坊社区",
                  "CENTERX": "120.16431845",
                  "CODE": "",
                  "CITY": "杭州市",
                  "TOWN": "清波街道",
                  "MAXY": "30.24266719",
                  "CENTERY": "30.24266719",
                  "MAXX": "120.16431845",
                  "ADDRESS": "浙江省杭州市上城区清波街道",
                  "SECTIONTYPE": "五级行政区域(行政村)",
                  "PROVINCE": "浙江省",
                  "FULLNAME": "浙江省杭州市上城区清波街道清河坊社区",
                  "COUNTY": "上城区"
                }]
            }]
        }]
    }]   
}]

上述代码的children有层层嵌套的关系,请问如何用java递归处理成一个对象数组?

  • 写回答

4条回答 默认 最新

  • 走一步-再走一步 2021-08-23 23:11
    关注
       public static void main(String[] args) throws Exception {
            String str ="{\"result\":[{\"MINX\":\"118.02250279\",\"UPDATETIME\":\"20180703\",\"MINY\":\"27.04543333\",\"SHORTNAME\":\"\",\"LABELY\":\"29.11397432\",\"LABELX\":\"120.58933477\",\"OID\":\"330000-000-2120-浙江省\",\"NAME\":\"浙江省\",\"OBJECTID\":\"330000-000-2120-浙江省\",\"CENTERX\":\"120.58933477\",\"CODE\":\"330000000\",\"CITY\":\"\",\"TOWN\":\"\",\"children\":[{\"MINX\":\"118.33967503\",\"UPDATETIME\":\"20180629\",\"MINY\":\"29.1885947\",\"SHORTNAME\":\"\",\"LABELY\":\"29.87685909\",\"LABELX\":\"119.52685481\",\"OID\":\"330100-000-2130-杭州市\",\"NAME\":\"杭州市\",\"OBJECTID\":\"330100-000-2130-杭州市\",\"CENTERX\":\"119.52685481\",\"CODE\":\"330100000\",\"CITY\":\"\",\"TOWN\":\"\",\"children\":[{\"MINX\":\"120.13241596\",\"UPDATETIME\":\"201612\",\"MINY\":\"30.19538921\",\"SHORTNAME\":\"\",\"LABELY\":\"30.22807413\",\"LABELX\":\"120.17105609\",\"OID\":\"330102-000-2140-上城区\",\"NAME\":\"上城区\",\"OBJECTID\":\"330102-000-2140-上城区\",\"CENTERX\":\"120.17105609\",\"CODE\":\"330102000\",\"CITY\":\"杭州市\",\"TOWN\":\"\",\"children\":[{\"MINX\":\"120.14936765\",\"UPDATETIME\":\"201612\",\"MINY\":\"30.23018409\",\"SHORTNAME\":\"\",\"LABELY\":\"30.23930124\",\"LABELX\":\"120.15866596\",\"OID\":\"330102-000-2150-清波街道\",\"NAME\":\"清波街道\",\"OBJECTID\":\"330102-000-2150-清波街道\",\"CENTERX\":\"120.15866596\",\"CODE\":\"330102001\",\"CITY\":\"杭州市\",\"TOWN\":\"\",\"children\":[{\"MINX\":\"120.16431845\",\"UPDATETIME\":\"201612\",\"MINY\":\"30.24266719\",\"SHORTNAME\":\"\",\"LABELY\":\"30.24266719\",\"LABELX\":\"120.16431845\",\"OID\":\"330102-000-2216-清河坊社区\",\"NAME\":\"清河坊社区\",\"OBJECTID\":\"330102-000-2216-清河坊社区\",\"CENTERX\":\"120.16431845\",\"CODE\":\"\",\"CITY\":\"杭州市\",\"TOWN\":\"清波街道\",\"MAXY\":\"30.24266719\",\"CENTERY\":\"30.24266719\",\"MAXX\":\"120.16431845\",\"ADDRESS\":\"浙江省杭州市上城区清波街道\",\"SECTIONTYPE\":\"五级行政区域(行政村)\",\"PROVINCE\":\"浙江省\",\"FULLNAME\":\"浙江省杭州市上城区清波街道清河坊社区\",\"COUNTY\":\"上城区\"}]}]}]}]}]}";
            parse(JSON.parseObject(str).getJSONArray("result"),"children");
    
        }
    
        private static void parse(JSONArray jsonArray, String childFiledName){
            if(jsonArray == null || jsonArray.size() == 0){
                return;
            }
            JSONArray arr = null;
            for (int i=0;i<jsonArray.size();i++){
                JSONObject jsonObject = jsonArray.getJSONObject(i);
                arr = null;
                for (Map.Entry<String, Object> entry : jsonObject.entrySet()) {
                    if(Objects.equals(entry.getKey(),childFiledName)){
                        arr = jsonObject.getJSONArray(childFiledName);
                        continue;
                    }
                    System.out.print(entry.getKey()+":"+entry.getValue()+"\t");
                }
                if(arr == null){
                    continue;
                }
                System.out.println("\n下一层");
                parse(arr,childFiledName);
            }
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 10月8日
  • 已采纳回答 9月30日
  • 创建了问题 8月23日

悬赏问题

  • ¥15 PADS Logic 原理图
  • ¥15 PADS Logic 图标
  • ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
  • ¥20 气象站点数据求取中~
  • ¥15 如何获取APP内弹出的网址链接
  • ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
  • ¥50 STM32单片机传感器读取错误
  • ¥15 (关键词-阻抗匹配,HFSS,RFID标签天线)
  • ¥15 机器人轨迹规划相关问题
  • ¥15 word样式右侧翻页键消失