string转换为jsonarray_jsonobject转jsonarray

string转换为jsonarray_jsonobject转jsonarray//创建JSONArray,把JSONObject放到JSONArrayJSONArrayja=newJSONArray();//获取JSONArrayJSONArrayitems=response.getJSONArray(“items”);if(!items.isEmpty()){//获取JSO…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

如果用的是jar包 则导包为 net.sf.json.JSONObject 

如果用的是fastjson  则导包为 import com.alibaba.fastjson.JSONObject

以下为fastjson。。。 jar包不支持json按存放顺序打印 见https://blog.csdn.net/weixin_42498050/article/details/116118948

 

String字符串转为JSONObject

JSONObject response_clusterJson = JSONObject.parseObject(response_cluster);

 

 

   // 创建JSONArray,把JSONObject放到JSONArray
                JSONArray ja = new JSONArray();

                // 获取JSONArray
                JSONArray items = response.getJSONArray("items");
                if (!items.isEmpty()) {
                    // 获取JSONArray长度
                    int size = items.size();

                    // 如果JSONObject定义在for循环外面。则JSONArray结果会出现{"$ref":"$[0]"},{"$ref":"$[0]"}]
                    // https://blog.csdn.net/u014487025/article/details/82711925
//                    JSONObject jo = new JSONObject(true);

                    // for循环遍历JSONObject
                    // 判断items长度,原则上长度不会大于3
                    if (size >= 1 && size <= 3) {

                        for (int i = 0; i < size; i++) {
                            String name;
                            String address;
                            String cluster;
                            String status;

                            String location = "【items】JSONArray数组下第" + i + "个";

                            // items.name名称校验
                            name = items.getJSONObject(i).getString("name");
                            if (name.isEmpty() || name == null || name.length() == 0) {
                                System.err.println(bug + location + "name错误,结果为空,实际为" + name);
                            } else if (name.matches("edge\\S*")) {
//                                    System.out.println(pass  +location "名称符合正则");

                            }

                            // items.address主机名/IP校验
                            address = items.getJSONObject(i).getString("address");
                            if (address.isEmpty() || address == null || address.length() == 0) {
                                System.err.println(bug + location + "主机名/IP错误,结果为空,实际为" + address);
                            } else if (address.matches("[0-9a-z]+")) {
//                                    System.out.println(pass  +location "主机名/IP符合正则");
                            }

                            // items.cluster集群校验
                            cluster = items.getJSONObject(i).getString("cluster");
                            if (cluster.isEmpty() || cluster == null || cluster.length() == 0) {
                                System.err.println(bug + location + "集群错误,结果为空,实际为" + cluster);
                            } else if (cluster.equalsIgnoreCase("Default")) {
                                System.out.println(pass + location + "集群符合正则");
                            }

                            // items.status状态校验
                            status = items.getJSONObject(i).getString("status");
                            if (status.isEmpty() || status == null || status.length() == 0) {
                                System.err.println(bug + location + "状态错误,结果为空,实际为" + status);
                            } else if (status.matches("up|Up|down|Down")) {
                                System.out.println(pass + location + "状态符合正则");
                            }

                            /* 创建JSONObject对象,把key value放到JSONObject
                             JSONObject为每次创建出来的对象,不要设置为全局,加班加的蒙圈了,开始放到了for循环外层。。。https://blog.csdn.net/u014487025/article/details/82711925
                            JSONArray如果add同一个元素(比如a)两次及以上时,只有第一次add a时存放数据,其它位置,存放指向第一次add的a在JSONArray中的位置指针
                            */

                            /* 按放到JSONObject的顺序(如 name address cluster status )打印JSONObject/JSONArray。只需要在创建json对象的时候,后面ordered传true
                             之前一直报错是因为之前用的jar包方式,不支持true。改为maven配置后就可以了。。。默认不传true,则会按照value的名称排序(目前看是,具体要看JSONObject怎么定义的)
                             */

                            JSONObject jo = new JSONObject(true);

                            jo.put("name", name);
                            jo.put("address", address);
                            jo.put("cluster", cluster);
                            jo.put("status", status);
                            System.out.println("debug-jo JSONOObject格式,第" + i + "个数组==" + jo);

                            // 把JSONObject放到JSONOArray
                            ja.add(jo);

                        }

                        System.out.println("debug-ja的JSONOArray格式==" + ja);

                        // JSONOArray转json字符串
                        String jaStr = ja.toString();
                        System.out.println("debug-jaStr最终存入log的json格式==" + jaStr);

                        FileWrite.originLogOnlyWrite(jaStr, getcn);
}

 

运行结果

string转换为jsonarray_jsonobject转jsonarray

 

不知道json格式的情况下 如何遍历所有key value?

 for (int i = 0; i < cmoja.size(); i++) {
                    // 不知道json格式的情况下,遍历所有的key value
                    JSONObject cmoob = cmoja.getJSONObject(i);
                    for (Map.Entry<String, Object> cmoentry : cmoob.entrySet()) {
                        String cmokey = cmoentry.getKey();
                        String cmovalue = (String) cmoentry.getValue();
//                        System.out.println("cmo系统的key值==【" + cmokey + "】,对应的value==【" + cmovalue + "】");
                        // 只需要校验value,不需要校验key,因为key是自己根据2端的数据自己定义的
                        // 校验mec接口是否包含cmo接口的全部value
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/172472.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 3d立体相册,情人节,情侣生日礼物代码适用

    3d立体相册,情人节,情侣生日礼物代码适用

    2021年3月12日
    184
  • 自动化运维平台的实施计划[通俗易懂]

    自动化运维平台的实施计划[通俗易懂]典型的例子:我有酒,你有故事吗? 自动化平台还要经历这几个阶段。…

    2022年5月16日
    38
  • C++11关键字constexpr看这篇就够了

    C++11关键字constexpr看这篇就够了一 在普通函数中的使用例如下面的代码 数组的大小必须是常量 在声明数组 array 时 用函数返回值 此时会报错 errorC2131 表达式的计算结果不是常数 note 对未定义的函数或为未声明为 constexpr 的函数的调用导致了故障用 constexpr 关键字可以解决这种问题 在 GetLen 函数前加 constexpr 声明 代码如下 当然 constexpr 修饰的函数也有一定的限制 函数体尽量只包含一个 return 语句 多个可能会编译出错

    2025年8月6日
    1
  • 大数据应用实例[通俗易懂]

    大数据应用实例[通俗易懂]通过对全国各地不同时间段的购买华硕笔记本电脑的销售量进行大数据处理,将其通过汇总分析,即可制成图表的格式,使用户能对华硕笔记本销售量进行研究,可以查看出华硕笔记本最近的销售同比(与上一年的销售比较)与环比(与上月的销售比较),购买的人数地域分布量,及购买的人群年龄分布,性别分布等等首先就是对华硕笔记本最近的销售同比(与上一年的销售比较)与环比(与上月的销售比较),整体同比及移…

    2022年6月2日
    51
  • mse均方误差怎么算_误差率怎么计算公式

    mse均方误差怎么算_误差率怎么计算公式请看下图当中的两个例子:分别求训练误差以及测试误差

    2022年9月30日
    2
  • jboss安装与配置_微信最新版下载并安装

    jboss安装与配置_微信最新版下载并安装jboss有开源和商业两个版本,他们区别如下:JBossAS开源社区版本,发布比较频繁。JBoss7,先后发布了7.0.0,7.0.1,7.0.2,7.1.0,7.1.1,7.1.2,7.1.3,7.2.0,其中7.1.1比较经典,7.2.0是JBossEAP6.1的基础,但7.1.2,7.1.3,7.2.0只是源代码打了Tag,并没提供开放下载。JBossEAP(EnterpriseApplicationPlatform)在开源版本上构建的企业版本,目

    2022年10月3日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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