Android json字符串转Map

Android json字符串转Map今天,同事问我json的问题。遍历json数组,解决完以后。我想到了json转Map这个问题。写一下,发现效果还行那个发上来看看吧。如果想省事的话,用阿里的FastJson我感觉也是不错的,网上教程很多,我就不多说了。注意这是Android自带的json包importorg.json.JSONArray;importorg.json.JSONException;importo…

大家好,又见面了,我是你们的朋友全栈君。

今天,同事问我json的问题。遍历json数组,解决完以后。我想到了 json转Map这个问题。写一下,发现效果还行 那个发上来看看吧。
如果想省事的话,用阿里的FastJson 我感觉也是不错的,网上教程很多,我就不多说了。

注意这是Android自带的json包

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

在这里说一下,JSONObject是键值对应的,符合map键值对应, JSONArray 是没有key的。这里,要转成map的话,我是按照JSONArray里面的元素顺序,给他们key,key就是他们的位置

看代码:

   /** * @param content json字符串 * @return 如果转换失败返回null, */
    Map<String, Object> jsonToMap(String content) { 
   
        content = content.trim();
        Map<String, Object> result = new HashMap<>();
        try { 
   
            if (content.charAt(0) == '[') { 
   
                JSONArray jsonArray = new JSONArray(content);
                for (int i = 0; i < jsonArray.length(); i++) { 
   
                    Object value = jsonArray.get(i);
                    if (value instanceof JSONArray || value instanceof JSONObject) { 
   
                        result.put(i + "", jsonToMap(value.toString().trim()));
                    } else { 
   
                        result.put(i + "", jsonArray.getString(i));
                    }
                }
            } else if (content.charAt(0) == '{'){ 
   
                JSONObject jsonObject = new JSONObject(content);
                Iterator<String> iterator = jsonObject.keys();
                while (iterator.hasNext()) { 
   
                    String key = iterator.next();
                    Object value = jsonObject.get(key);
                    if (value instanceof JSONArray || value instanceof JSONObject) { 
   
                        result.put(key, jsonToMap(value.toString().trim()));
                    } else { 
   
                        result.put(key, value.toString().trim());
                    }
                }
            }else { 
   
                Log.e("异常", "json2Map: 字符串格式错误");
            }
        } catch (JSONException e) { 
   
            Log.e("异常", "json2Map: ", e);
            result = null;
        }
        return result;
    }

使用

   JSONObject jsonObject = new JSONObject();
        jsonObject.put("one", "哈哈哈");
        jsonObject.put("two", "yyy");
        JSONArray jsonArray = new JSONArray();
        jsonArray.put("数组内容1");
        jsonArray.put("数组内容2");
        jsonArray.put("数组内容3");
        JSONObject inner = new JSONObject();
        inner.put("内置", "我是内置的");
        inner.put("内置数组", new JSONArray().put(1));
        jsonArray.put(inner);
        jsonObject.put("three", jsonArray);

        Map<String, Object> map = jsonToMap(jsonObject.toString());
        //这里最好写一个循环输出map的方法 ,我这是偷懒的写法
        map.forEach((s, o) -> { 
   
            Zprint.log(this.getClass(), s, o);
        });

输出结果

在这里插入图片描述

完全符合要求。

是不是很好奇 我的控制台怎么是这种格式的,这是我自定义的log输出工具,可以看我以前的博客。Android 输出日志 带类名 方法名 参数 行号,点击直接到代码行

如果有不懂的,可以关注我的公众号 “知我饭否” 向我留言。我会每天更新一些文章,有兴趣的可以 微信 搜索”知我饭否” or 扫描我的 博客头像

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/151803.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 艺多不压身 — 目录

    艺多不压身 — 目录

  • 大数据应用及其解决方案(完整版)

    大数据应用及其解决方案(完整版)目录1、大数据概述1.1.概述1.2.大数据定义1.3.大数据技术发展2、大数据应用2.1.大数据应用阐述2.2.大数据应用架构2.3.大数据行业应用2.3.1.医疗行业2.3.2.能源行业2.3.3.通信行业2.3.4.零售业3、大数据解决方案3.1.大数据技术组成3.1.1.分析技术3.1.2.存储数据库…

  • 彻底解决git clone以及 recursive慢的问题

    彻底解决git clone以及 recursive慢的问题gitclone龟速已然成为常态,甚至使用科学上网的办法也无法有效解决。看过很多种方法,例如,改hosts,换镜像等,这些对于我来说并不好使,以及介绍的的确确游有用的办法。1.使用码云,将github里的仓库拉到码云中去,然后在码云下载,速度就很快。对于一般的项目而言,这样就足够了,但是对于有很多子模块的项目而言,由于子模块链接的地址皆指向github,因此,对于gitsubmoduleupdate–init–recursive而言仍是龟,因此,接下来就是方法22.在gitclone的

  • 《Android应用开发揭秘》读书笔记——android学习目录

    《Android应用开发揭秘》读书笔记——android学习目录声明:学习的书籍《Android应用开发揭秘》,这里记录学习该书籍的日志,引用的相关代码与总结描述,没有商业的用途,完全是自我学习的一个记录。开发环境JDK6.0+Eclipse3.6+androidsdk2.2,因为自己手机就是2.2版本的,刚开始学没选最新版本。链接目录如下:【android基础学习之一】——事件的监听与触发【android基础学习之二】——基础控件ListVie…

  • upx脱壳(手动)

    upx脱壳(手动)1.upx脱壳几乎可以算是最简单的了,第一步还是查壳2.第二步当然是od打开,提示解析代码,是和否都可以,然后f8,打硬件断点。3.此时再f9执行到硬件断点,可以看到popad,壳代码到这基本上结束了,后面就是oep。在下面的一个大跳jmp处断点,然后取消硬件断点,f9到断点。4.然后f8过去,可以看到如下画面。此处作为oep,可以开始进行脱壳5.右键——使用od调试进程6.复…

  • Kotlin概述与Java的比较

    Kotlin概述与Java的比较Kotlin是JetBrains的一种新的编程语言。它首次出现在2011年,JetBrains推出了名为“科特林”的项目。Kotlin是开源语言。基本上像Java一样,C和C++-Kotlin也是“静态类型编程语言”。静态类型的编程语言是在使用变量之前不需要定义的那些语言。这意味着静态类型与变量的使用明确声明或初始化有关。如前所述,Java是静态类型语言的一个例子,类似C和C++

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号