Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >string转换为jsonarray_jsonobject转jsonarray

string转换为jsonarray_jsonobject转jsonarray

作者头像
全栈程序员站长
发布于 2022-09-22 14:48:55
发布于 2022-09-22 14:48:55
1.9K00
代码可运行
举报
运行总次数:0
代码可运行

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

如果用的是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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
JSONObject response_clusterJson = JSONObject.parseObject(response_cluster);
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   // 创建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);
}

运行结果

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 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.cn/172472.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
关于 java JSONArray JSONObject转换问题
import lhy.client.json.JSONArray; import lhy.client.json.JSONException; import lhy.client.json.JSONObject;
全栈程序员站长
2022/08/22
3220
关于 java JSONArray JSONObject转换问题
java JSON使用之JSONObject、JSONArray与Object的转换
String jsonStr = JSONObject.fromObject(p1).toString();
全栈程序员站长
2022/09/02
2.7K0
fastjson的JSONArray和JSONObject[通俗易懂]
java和js中JSONObject,JSONArray,Map,String之间转换——持续更新中
全栈程序员站长
2022/06/26
2.1K0
fastjson的JSONArray和JSONObject[通俗易懂]
fastjson如何判断JSONObject和JSONArray
1、fastjson如何判断JSONObject和JSONArray,百度一下,教程还真不少,但是是阿里的fastjson的我是没有找到合适的方法。这里用一个还算可以的方法,算是实现了这个效果。
别先生
2018/10/09
2.8K1
JSONArray和JSONObject的转换
在项目日常开发中常常会遇到JSONArray和JSONObject的转换,很多公司刚入职的小萌新会卡在这里,今天和大家分享一下,有更厉害的大佬也可以指教一下!话不多说上硬菜
全栈程序员站长
2022/08/15
7050
JSONArray和JSONObject的转换
Android-json解析(三):原生JSONObject+JSONArray的解析、遍历及生成等
Android-Gson+GsonFormat的导入 Android-json解析(一):Gson的使用 Android-json解析(二):Jackson的使用 Android-json解析(三):原生JSONObject+JSONArray的使用 Android-json解析(四):fastjson的使用
全栈程序员站长
2022/09/14
8.2K0
JsonObject和JsonArray转换问题
开发过程中遇到需要将调用接口返回的JsonObject转换为JsonArray格式的数据,在使用过成中遇到转换问题,代码如下
全栈程序员站长
2022/09/02
7700
JsonObject和JsonArray转换问题
java jsonarray string,java json字符串转JSONObject和JSONArray以及取值的实例「建议收藏」
public static void main(String[] args) {
全栈程序员站长
2022/08/26
7430
获取的string转JSONArray或JSONObject
“operateType”: “READ”,
全栈程序员站长
2022/08/31
7960
获取的string转JSONArray或JSONObject
JSONObject与JSONArray的使用
要使程序能够执行必须引入JSON-lib包,JSON-lib包同一时候依赖于下面的JAR包:
全栈程序员站长
2022/07/14
3660
JsonArray和JsonObject遍历方法
一:遍历JsonArray // 一个未转化的字符串 String str = "[{name:'a',value:'aa'},{name:'b',value:'bb'},{name:'c',value:'cc'},{name:'d',value:'dd'}]" ; // 首先把字符串转成 JSONArray 对象 JSONArray json = JSONArray.fromObject(str ); if(json.size()>0){ for(int i=0;i<json.size();i+
唐怀瑟
2018/08/30
4K0
JSON,String,JSONObject,JSONArray的转换
欢迎来到本篇技术博客,今天我们将探讨在Java中如何进行JSON、String、JSONObject、JSONArray之间的转换。JSON(JavaScript Object Notation)作为一种轻量级的数据交换格式,广泛应用于现代软件开发中。在本文中,我们将深入研究JSON的基本概念,以及如何在Java中高效地进行数据的转换与处理。
疯狂的KK
2023/09/27
1.4K0
JSON,String,JSONObject,JSONArray的转换
个人对json的一些简单理解?
json是什么? 没有.json结尾的这种文件,json(JavaScript Object Notation)是一种简单的数据交换格式,在此之前我也不知道这个东西其实没有想象的那么抽象,看看后面的例子会更清晰
全栈程序员站长
2022/06/27
4790
JSONObject转换为JSONArray
以com.alibaba.fastjson中的JSONArray与JSONObject为例:
全栈程序员站长
2022/09/01
1.1K0
org.json.JSONObject对象转json,json新增元素,根据json的key获取值。以及list对象格式字符串转jsonArray
首先设置好多类,并set值,制作一个比较复杂的含有map ,list ,等层级嵌套的对象
全栈程序员站长
2022/06/30
2.9K0
fastjson JSONArray和JSONObject 转对象数组和对象「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/133882.html原文链接:https://javaforall.cn
全栈程序员站长
2022/06/26
2.1K0
fastjson JSONArray和JSONObject 转对象数组和对象「建议收藏」
JsonNode、JsonObject常用方法[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/158330.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/14
2K0
关于String转jsonArray,jsonArray转json,json写入实体类
工作要写个接收数据的接口,基于springMVC的,不了解,补充学习下json的用法
全栈程序员站长
2022/08/31
1.1K0
Java中用fastjson对String、JSONObject、JSONArray相互转换
fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean
全栈程序员站长
2022/08/31
5900
java中各种距离换算
获取两点之间的距离 public class LocationUtils { /** * 赤道半径 */ private static double EARTH_RADIUS = 6378.137; private static double rad(double d) { return d * Math.PI / 180.0; } /** * Description : 通过经纬度获取距离(单位:米) *
崔笑颜
2020/09/29
1.4K0
推荐阅读
相关推荐
关于 java JSONArray JSONObject转换问题
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验