string转换为jsonarray_jsonobject转jsonarray

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


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)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • promptings是什么意思啊(think again)

    原文:http://windowsxp.mvps.org/890859.htm 当你通过Web方式的WindowsUpdates或者Windows自动更新安装完KB890859补丁后,系统依然不断提示此更新未安装,不断弹出安装对话框,可能的原因是一个或者多个主要的Windows文件未能成功地被此Hotfix更新或者覆盖导致,需要校验此更新是否成功,打开%WINDIR%/system32目录,

    2022年4月14日
  • 用matlab绘制线性分段函数图像[通俗易懂]

    用matlab绘制线性分段函数图像[通俗易懂]假设线性分段函数如下所示在matlab中建立m文件:输入以下代码:x=0:0.01:5;y=zeros(size(x));fori=1:length(x)ifx(i)<0.9y(i)=0;elseifx(i)>=0.9&&x(i)<4.34y(i)=29.0698.*x(i)-26.1628;elsey(i)=100;endend

    2022年5月20日
  • qlineedit_qt layoutstretch

    qlineedit_qt layoutstretch简述QLineEdit是一个单行文本输入框。QLineEdit允许用户输入和编辑单行纯文本,提供了很多有用的编辑功能,包括:撤消和重做、剪切和粘贴、以及拖放(见setDragEnabled())。通过改变输入框的echoMode(),同时也可以设置为一个“只写”字段,用于输入密码等。文本的长度可以被限制为maxLength(),可以使用一个validator()或inputMask()来任意限制文本

    2022年10月6日
  • Java 数组转list_java定义list数组

    Java 数组转list_java定义list数组方式一String[]array={“111″,”222″,”333”};Listlist=Arrays.asList(array);//list.add(“444”);list.remove(0);如上图所示,不可进行新增或删除元素的操作。Arrays.asList(array),返回的List是具有固定长度的私有静态内部类java.util.Arrays.ArrayList,所以…

    2022年8月23日
  • grep 命令详解_grep命令详解

    grep 命令详解_grep命令详解一:grep命令的基本概念和用途grep命令是linux中一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。在一个或多个文件中搜素字符串模式,如果字符串模式包括空格,也必须被引用,模式后的所有字符串被看作文件名。搜索的结果被送到标准输出(stdout),不影响原文件内容。grep也可以用于shell脚本,因为grep通过返回一个状态值来说明搜索的结果,如果模式搜索成功,则返回0;如果搜索不成功,则返回1;如果搜索的文件不存在,则返回2;我们利用这些返回值就可以进行一些自动化的文

    2022年8月30日
  • 我对petshop4的简单理解![通俗易懂]

    我对petshop4的简单理解![通俗易懂]petshop4充分体现了面向接口编程的思想,就是给你一个接口你别管我是怎么实现的,你只管用别说其他的。namespacePetShop.BLL{   ///   ///Abusinesscomponenttomanageproducts   ///   publicclassProduct{       //Getaninstan

    2022年8月31日

发表回复

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

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